Сортировка работает неправильно - C (СИ)
Формулировка задачи:
#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+i; 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; }
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],","); }
Решение задачи: «Сортировка работает неправильно»
textual
Листинг программы
void my_swap(long *a, long *b){ int temp = *a; *a = *b; *b = temp; } void bubbleSort(long list[], int size) { int i, j; for(i = 1; i < size; i++){ for(j = size - 1; j >= i; j--) if(list[j] < list[j - 1]) my_swap(&list[j], &list[j-1]); } }
Объяснение кода листинга программы
- В первой функции
my_swap
происходит обмен значениями между двумя указателями типаlong
. - Во второй функции
bubbleSort
происходит сортировка массиваlist
с помощью алгоритма сортировки пузырьком. - Внутри цикла сортировки пузырьком (который выполняется
size - 1
итераций) происходит сравнение элементовlist[j]
иlist[j-1]
. Если первый больше второго, то они меняются местами с помощью функцииmy_swap
. - Итерация внешнего цикла начинается с
i = 1
и продолжается до тех пор, пока не достигнетsize
. - Итерация внутреннего цикла начинается с
j = size - 1
и выполняется до тех пор, пока не достигнетi
(поскольку на каждой итерации наибольший элементвсплывает
в конец массива). - После завершения сортировки массив
list
будет отсортирован в порядке возрастания.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д