Ошибка сортировки вставками - C (СИ)
Формулировка задачи:
#include <stdio.h> #include <stdlib.h> #include <conio.h> int main() { clrscr(); textcolor(14); unsigned long iran; unsigned long rand_a, rand_c, rand_m; unsigned long jran; int i, j,n,tmp; unsigned long a[6][6]; rand_m = 233280; rand_a = 9301; rand_c = 49297; for (i = 0; i < 6; i++) { for (j = 0; j < 6; j++) { iran = (iran * rand_a + rand_c) % rand_m; jran = (65157 * iran) % rand_m; a[i][j] = jran; printf("%7lu", a[i][j]) ; } } printf ("\n\n\n odnovumirnuj nevporjadkovanuj masiv:\n\n"); int b[36]; for(i=0;i<6;i++) for(j=0;j<6;j++) { n=6*i+i; b[n]=a[i][j]; printf("%d,",b[n]); } printf("\n\n\n odnovumirnuj vporjadkovanuj masiv:\n\n"); for ( i=0; i < 36; i++){ if (b[i] > b [i + 1] ) { tmp = b[i]; b[i] =b[i+1]; b[i+1]=tmp; } } for(i=0;i<36;i++) printf("|%d|",b[i]); getch(); return 0; }
for ( i=0; i < 36; i++){
* * if (b[i] > b [i + 1] ) {
* * * * tmp = b[i];
* * * * b[i] =b[i+1];
* * * * * * b[i+1]=tmp;
* * * * * *}
* * * * }
*for(i=0;i<36;i++)
* *printf("|%d|",b[i]);
* * *getch();
return 0;
}
ой и не вставками а пузырьком
Решение задачи: «Ошибка сортировки вставками»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <math.h> int main() { int iran; int rand_a,rand_c,rand_m; int jran; int i,j,n,x,r; int a[4][5],b[20]; rand_m=714025; rand_a=4096; rand_c=150889; for (i=0;i<4;i++) { printf("\n"); for (j=0;j<5;j++) {iran=(iran*rand_a+rand_c)%rand_m; jran=-100+((300)*iran)%rand_m; a[i][j]=jran; printf("%7d,",a[i][j],","); } } printf ("\n\n\n odnovumirnuj nevporjadkovanuj masiv:\n\n"); for(i=0;i<4;i++) for(j=0;j<5;j++) { n=4*i+j; b[n]=a[i][j]; printf("%d,",b[n]); } printf("\n\n\n odnovumirnuj vporjadkovanuj masiv:\n\n"); for ( i=0; i <20; i++) { x = b[i]; for ( j=i-1;j>=0 && b[j] > x; j--) b[j+1] = b[j]; b[j+1] = x; printf("%6d,",b[n],","); } getch(); return 0; }
Объяснение кода листинга программы
В этом коде выполняется сортировка массива вставками.
- В начале кода определяются переменные и массивы:
iran
- используется в качестве временной переменной в цикле сортировки;rand_m
,rand_a
,rand_c
- используются для генерации случайных чисел при заполнении массиваa
;a[i][j]
- массив 4х5, заполняемый случайными числами;b[n]
- массив 20 элементов, в который будут копироваться числа изa
для сортировки;n=4*i+j
- используется для индексации массиваb
.
- Затем происходит заполнение массива
a
случайными числами и его вывод на экран. - Далее, происходит сортировка массива
b
вставками. Для каждого элементаx
в массивеb
ищутся позиции, куда его можно вставить, чтобы сохранить возрастающий порядок. Если таких позиций нет, элемент считается уже отсортированным и не двигается. - В конце сортировки, отсортированный массив
b
выводится на экран. - Код завершается вызовом функции
getch()
, которая ожидает нажатия клавиши, и возвращает управление операционной системе.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д