Сортировка Шелла - C (СИ) (76657)

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

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

Помогите пожалуйста сделать сортировку Шелла. Тип входных данных целочисленный. Направление сортировки по убыванию. Объсните что да как. Заранее спасибо)

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

textual
Листинг программы
#define N 10
 
void swap(int& n1, int& n2);
 
int main()
{
    int A[10] = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };
 
    for (int gap = N-1; gap >= 0; gap--)
        for (int i = 0; (i + gap) < N; i++)
            if (A[i] > A[i + gap]) swap(A[i],A[i+gap]);
 
    for (int k = 0; k < 10; k++)
        printf("%d ",A[k]);
    printf("\n");
 
    return 0;
}
 
void swap(int& n1, int& n2)
{ int _t = n1; n1 = n2; n2 = _t; }

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

  1. В данном коде реализуется алгоритм сортировки Шелла (Shell sort).
  2. Массив A инициализируется значениями {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}.
  3. Переменная gap устанавливается равной N-1, где N — размер массива.
  4. В цикле for перебираются все значения gap от N-1 до 0.
  5. Внутренний цикл for перебирает все элементы массива A с шагом gap + 1.
  6. Если текущий элемент больше следующего, то они меняются местами с помощью функции swap.
  7. Функция swap принимает два аргумента типа int& (указатель на int), которые передаются по ссылке, и меняет их значения местами.
  8. После завершения внутренних циклов выводится отсортированный массив A с помощью функции printf.
  9. Возвращаемое значение функции main() равно 0, что означает успешное завершение работы программы.

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


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

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

14   голосов , оценка 4.214 из 5