Сортировка работает неправильно - 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]);
    }
}

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

  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
Похожие ответы