Реализовать сортировки пузырьком, Шелла и быструю - C (СИ)

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

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

Нужно реализовать сортировки пузырьком, Шелла и быструю. Есть наброски. Программа прекращает работу после введения чисел.
#include <stdio.h>
void bubble(int *items, int count)
 
{
 
   int i, j;
 
   int t;
 
  for(i = 1; i < count; ++i)
 
    for( j = count-1; j >= i; --j) {
 
      if(items[j - 1] > items[ j ]) {
 
        t = items[j - 1];
 
        items[j - 1] = items[ j ];
 
        items[ j ] = t;
 
      }
 
    }
 
}

void shell(int *items, int count)
 
{
 
  int i, j, gap, k;
 
  int x, a[5];
 
  a[0]=8; a[1]=5; a[2]=3; a[3]=2; a[4]=1;
 
  for(k=0; k < 5; k++) {
 
    gap = a[k];
 
    for(i=gap; i < count; ++i) {
 
      x = items[i];
 
      for(j=i-gap; (x < items[j]) && (j >= 0); j=j-gap){
 
        items[j+gap] = items[j];
 
      }
 
      items[j+gap] = x;
 
    }
 
  }
 
}
 
void quickSort(int *items, int left, int right)
 
{
 
  int i, j;
 
  int x, y;
 
  i = left;
 
  j = right;
 
  x = items[(left+right)/2];
 
  do {
 
    while((items[i] < x) && (i < right))
 
       i++;
 
    while((x < items[j]) && (j > left))
 
       j--;
 
    if(i <= j) {
 
      y = items[i];
 
      items[i] = items[j];
 
      items[j] = y;
 
      i++; j--;
 
    }
 
  } while(i <= j);
 
  if(i < right)
 
      quickSort(items, i, right);
 
  if(left < j)
 
      quickSort(items, left, j);
 
}
 
void quickSortMain(int *items, int count)
 
{
 
  quickSort(items, 0, count-1);
 
}
 
int main(void)
 
{
 
const int N = 5;
 
int s[5];
 
int p[5];
 
int r[5];
 
printf("Enter a masiv:");
 
scanf("%i", s[N]);
 
bubble(s, N);
 
printf("The sorted bubble is: %s.\n", s[N]);
 
printf("Enter a masiv:");
 
scanf("%i", p[N]);
 
shell(p, N);
 
printf("The sorted shell is: %s.\n", p[N]);

printf("Enter a masiv:");
 
scanf("%i", r[N]);
 
quickSortMain(r, N);
 
printf("The sorted string quick is: %s.\n", r[N]);
 
return 0;
 
}

Решение задачи: «Реализовать сортировки пузырьком, Шелла и быструю»

textual
Листинг программы
const int N = 5;
int s[5];
scanf("%i", s[N]);

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

  1. В начале кода объявляется константа N равная 5, которая представляет собой количество элементов в массиве s.
  2. Затем объявляется массив s типа int с размером N.
  3. Далее происходит чтение N-1 элементов массива s с помощью функции scanf, где пользователь вводит значения этих элементов.
  4. Последний элемент массива s инициализируется значением N.
  5. Код не содержит реализации сортировки пузырьком, Шелла и быстрой, поэтому дальнейшие действия зависят от того, что делает программа после этого.

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


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

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

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