Сортировка пузырьком - C (СИ) (76206)
Формулировка задачи:
Помогите пожалуйста написать программу,не получается,НА ЯЗЫКЕ СИ!
Задание: В матрице n*m отсортируйте нечетные строки в порядке возрастания элементов k столбца.
вот коды которые можно использовать в программе (но надо без функции!!!)
void sort(int a[n])
{
int t=0, i, j;
// цикл для прохода по массиву
for (i=0; i<n; i++)
{
// цикл для перебора элементов
for (j=n-1; j>=1; j--)
{
// если последний элемент меньше предыдущего, то меняем местами
if (a[j]<a[j-1])
{
t=a[j]; a[j]=a[j-1]; a[j-1]=t;
}
}
}
}Решение задачи: «Сортировка пузырьком»
textual
Листинг программы
int sor(int a[][5]);
int vvod(int a[][5]);
int vyvod(int a[][5]);
#include <stdio.h>
int main(void)
{
int a[5][5];
vvod(a);
sor(a);
vyvod(a);
return 0;
}
int vyvod(int a[][5]) {
int i,j;
printf("\n");
printf("\nOtsortirovanny` variant: ");
printf("\n\n");
sor(a);
for(i=0; i<5; i++) {
for(j=0; j<5; j++) {
printf(" %i",a[i][j]);
}
printf("\n");
}
printf("\n");
return 0;
}
int vvod(int a[][5]) {
int i,j;
printf("\nVvodite elementy:\n");
for(i=0; i<5; i++) {
for(j=0; j<5; j++) {
scanf("%i",&a[i][j]);
}
}
printf("\n");
printf("\nIsxodny` variant: ");
printf("\n\n");
for(i=0; i<5; i++) {
for(j=0; j<5; j++) {
printf(" %i",a[i][j]);
}
printf("\n");
}
return 0;
}
int sor(int a[][5]) {
int i,j,h,prom;
for(h=0; h<5; h++) {
for(i=0; i<5; i=i+2) {
for(j=0; j<4; j++) {
if(a[i][j] > a[i][j+1]) {
prom=a[i][j];
a[i][j]=a[i][j+1];
a[i][j+1]=prom;
}
}
}
}
return 0;
}
Объяснение кода листинга программы
int sor(int a[][5]);- это функция, которая принимает двумерный массивaразмером 5x5 и выполняет сортировку пузырьком. Возвращает функция0.int vvod(int a[][5]);- это функция, которая запрашивает у пользователя ввод элементов для массиваaи сохраняет их в массив. Возвращает функция0.int vyvod(int a[][5]);- это функция, которая выводит на экран массивaв отсортированном виде. Возвращает функция0.int main(void)- это главная функция программы, которая считывает с диска массивa, вызывает функцию сортировкиsor(a), выводит на экран отсортированный массивaс помощью функцииvyvod(a). Возвращает функция0.int vyvod(int a[][5])- это функция, которая выводит на экран массивa. Для этого используются два вложенных циклаfor, которые проходят по всем элементам массива. Каждое число выводится с помощью функцииprintf(). После вывода всех чисел вызывается функцияprintf(\n);, чтобы перейти на новую строку. Возвращает функция0.int vvod(int a[][5])- это функция, которая запрашивает у пользователя ввод элементов для массиваa. Для этого используются два вложенных циклаfor, которые проходят по всем элементам массива. В каждой итерации внутреннего цикла вызывается функцияscanf(), которая считывает с диска число и сохраняет его в соответствующий элемент массиваa. После ввода всех чисел вызывается функцияprintf(\n);, чтобы перейти на новую строку. Возвращает функция0.int sor(int a[][5])- это функция, которая выполняет сортировку пузырьком. Для этого используется три вложенных циклаfor. Внешний циклforпроходит по всем строкам массиваa. В каждой итерации внешнего цикла вызывается внутренний циклfor, который проходит по всем элементам текущей строки. Если текущий элемент больше следующего, то они меняются местами с помощью временной переменнойprom. Внутренний циклforвыполняется до тех пор, пока не будет отсортированна текущая строка. Возвращает функция0.