Сортировка работает неправильно - 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
будет отсортирован в порядке возрастания.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д