Другое

Сортировка перемешиванием в C: основные сведения об этом методе

Lorem ipsum dolor

Сортировка перемешиванием в С имеет множество различных названий:

  • пузырьковая сортировка двунаправленного действия;

  • шейкер-сортировка;

  • сортировка пульсацией;

  • сортировка трансфером;

  • «счастливый час».

Сколько бы ни было названий — результат один.

 

Сортировка перемешиванием в С

По своей сути сортировка перемешиванием — это модифицированная всем известная пузырьковая сортировка. Основной недостаток традиционной пузырьковой сортировки — это медленное «движение» значений массива к своим отсортированным позициям. В сортировке перемешиванием избавились от этого недостатка. Этого удалось добиться за счет поочередной сортировки массива в разных направлениях. Применяя такой подход, удалось достичь того, что элементы, которые располагаются далеко от отсортированных позиций, быстрее занимают выделенные места.

Почему такую сортировку называют «сортировка перемешиванием» или «шейкер-сортировка»? Потому что в момент ее выполнения массив действительно похож на хорошо перемешанный массив.

 

Сортировка перемешиванием в С, реализация кодом

Приведем простой пример реализации сортировки перемешиванием:

bool sort_number = true;

   do {

    sort_ number = true;

    for (int i = 0; i < n; i++) { // n — количество элементов массива

      if (number[i] > number[i + 1]) {

        swap (number[i], number[i + 1]);

        sort_ number = false;

      }

    }

    for (int i = 4; i >= 1; i--) {

      if (number[i] < number[i - 1]) {

        swap (number[i], number[i - 1]);

        sort_ number = false;

      }

    }

  } while (sort_ number == false);

 

Объясняем пример. Мы создали bool-переменную «sort_number» и сразу придали ей значение «true». Мы за 2 цикла проверим, были ли изменены значения в ячейках.

«sort_number» присвоит значение «false», когда результаты после выполнения оператора «if» будут «true».

Смысл заключается в том, что мы прописали в цикле «do while», что «sort_number == false». Это означает, что, пока происходит обмен значений ячеек, сортировка перемешиванием заканчиваться не будет. Когда «sort_number» после цикла не будет равна «false», такой цикл будет считаться завершенным и мы выйдем из него.

 

Заключение

Сортировка перемешиванием в С не так сложна в реализации, как кажется изначально. Мы привели простейший пример, но при этом есть много других способов, как она реализовывается.

Схожие статьи

Data science: курсы для начинающих, которые действительно стоит изучить
Другое

Data science: курсы для начинающих, которые действительно стоит изучить

Все про язык Swift: многопоточность, базовые операторы, функции
Другое

Все про язык Swift: многопоточность, базовые операторы, функции

Разработчик высоконагруженных систем: профессия будущего или нет?
Другое

Разработчик высоконагруженных систем: профессия будущего или нет?

Автоматизация тестирования: виды автоматизированного тестирования
Другое

Автоматизация тестирования: виды автоматизированного тестирования

×