Ошибка сортировки вставками - 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;
}

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

В этом коде выполняется сортировка массива вставками.

  1. В начале кода определяются переменные и массивы:
    • iran - используется в качестве временной переменной в цикле сортировки;
    • rand_m, rand_a, rand_c - используются для генерации случайных чисел при заполнении массива a;
    • a[i][j] - массив 4х5, заполняемый случайными числами;
    • b[n] - массив 20 элементов, в который будут копироваться числа из a для сортировки;
    • n=4*i+j - используется для индексации массива b.
  2. Затем происходит заполнение массива a случайными числами и его вывод на экран.
  3. Далее, происходит сортировка массива b вставками. Для каждого элемента x в массиве b ищутся позиции, куда его можно вставить, чтобы сохранить возрастающий порядок. Если таких позиций нет, элемент считается уже отсортированным и не двигается.
  4. В конце сортировки, отсортированный массив b выводится на экран.
  5. Код завершается вызовом функции getch(), которая ожидает нажатия клавиши, и возвращает управление операционной системе.

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


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

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

13   голосов , оценка 4 из 5
Похожие ответы