Сортировка работает неправильно - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #include <math.h>
  5. int main()
  6. {
  7. int iran;
  8. int rand_a,rand_c,rand_m;
  9. int jran;
  10. int i,j,n,x,r;
  11. int a[4][5],b[20];
  12. rand_m=714025;
  13. rand_a=4096;
  14. rand_c=150889;
  15. for (i=0;i<4;i++)
  16. {
  17. printf("\n");
  18. for (j=0;j<5;j++)
  19. {iran=(iran*rand_a+rand_c)%rand_m;
  20. jran=-100+((300)*iran)%rand_m;
  21. a[i][j]=jran;
  22. printf("%7d,",a[i][j],",");
  23. }
  24. }
  25. printf ("\n\n\n odnovumirnuj nevporjadkovanuj masiv:\n\n");
  26. for(i=0;i<4;i++)
  27. for(j=0;j<5;j++)
  28. {
  29. n=4*i+i;
  30. b[n]=a[i][j];
  31. printf("%d,",b[n],",");
  32. }
  33. printf("\n\n\n odnovumirnuj vporjadkovanuj masiv:\n\n");
  34. for ( i=0; i <20; i++)
  35. {
  36. x = b[i];
  37. for ( j=i-1;j>=0 && b[j] > x; j--)
  38. b[j+1] = b[j];
  39. b[j+1] = x;
  40. printf("%6d,",b[n],",");
  41. }
  42. getch();
  43. return 0;
  44. }
пеправильно сортирует исправте плз ошибку
Листинг программы
  1. for ( i=0; i <20; i++)
  2. {
  3. x = b[i];
  4. for ( j=i-1;j>=0 && b[j] > x; j--)
  5. b[j+1] = b[j];
  6. b[j+1] = x;
  7. printf("%6d,",b[n],",");
  8. }
до этого момента все правильно , а дальше неверо сортирует(

Решение задачи: «Сортировка работает неправильно»

textual
Листинг программы
  1. void my_swap(long *a, long *b){
  2.     int temp = *a; *a = *b; *b = temp;
  3. }
  4.  
  5. void bubbleSort(long list[], int size)
  6. {
  7.     int i, j;
  8.  
  9.     for(i = 1; i < size; i++){
  10.         for(j = size - 1; j >= i; j--)
  11.             if(list[j] < list[j - 1])
  12.                 my_swap(&list[j], &list[j-1]);
  13.     }
  14. }

Объяснение кода листинга программы

  1. В первой функции my_swap происходит обмен значениями между двумя указателями типа long.
  2. Во второй функции bubbleSort происходит сортировка массива list с помощью алгоритма сортировки пузырьком.
  3. Внутри цикла сортировки пузырьком (который выполняется size - 1 итераций) происходит сравнение элементов list[j] и list[j-1]. Если первый больше второго, то они меняются местами с помощью функции my_swap.
  4. Итерация внешнего цикла начинается с i = 1 и продолжается до тех пор, пока не достигнет size.
  5. Итерация внутреннего цикла начинается с j = size - 1 и выполняется до тех пор, пока не достигнет i (поскольку на каждой итерации наибольший элемент всплывает в конец массива).
  6. После завершения сортировки массив list будет отсортирован в порядке возрастания.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы