Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л р №5 Методы сортировки.doc
Скачиваний:
7
Добавлен:
31.08.2019
Размер:
349.18 Кб
Скачать

1.6. Быстрая сортировка (сортировка Хоара)

В методе быстрой сортировки фиксируется какой - либо ключ (базовый), относительно которого все элементы с большим весом перебрасываются вправо, а с меньшим — влево. При этом весь список элементов делится относительно базового ключа на две части. Для каждой части процесс повторяется.

Поясним метод на примере.

На рис.10 представлен первый этап быстрой сортировки. В первой строке указана исходная последовательность.

Примем первый элемент последовательности за базовый ключ, выделим его квадратом и обозначим . Установим два указателя: i и j, из которых i начинает отсчет слева (i= 1), а j — справа (j = п).

Сравниваем базовый ключ и текущий ключ . Если , то устанавливаем и проводим следующее сравнение и . Продолжаем уменьшать j до тех пор, пока не достигнем условия . После этого меняем местами ключи и (шаг 3 на рис. 10).

Рис. 10. Метод Хоара

Теперь начинаем изменять индекс и сравнивать элементы и . Продолжаем увеличение i до тех пор, пока не получим условие , после чего следует обмен и (см. шаг 5). Снова возвращаемся к индексу j, уменьшаем его. Чередуя уменьшение j и увеличение i, продолжаем этот процесс с обоих концов к середине до тех пор, пока не получим (см. шаг 7).

В отличие от предыдущих рассмотренных сортировок уже на •м этапе имеют место два факта: во-первых, базовый ключ занял свое постоянное место в сортируемой последовательности; во-вторых, все элементы слева от будут меньше него, а справа — больше него. Таким образом, по окончании первого этапа имеем:

21, 11, 32

40

57, 83, 75, 64

Левая часть

Правая часть

Указанная процедура сортировки применяется независимо к левой и правой частям.

Сложность метода Хоара — .

Индивидуальные задания

Написать программу для каждого из перечисленных методов сортировки. Алгоритмы сортировок должны быть оформлены в виде функции.

Вариант

Составить программу

1, 9

1000

4000

6000

Простая вставка

2, 11

800

3000

7000

Сортировка слиянием

3, 13

2000

5000

6800

Метод Шелла

4, 15

1500

3500

6000

Простой выбор

5, 16

1000

2800

8500

Метод Хоара

6, 14

500

2500

6500

Бинарная вставка

7, 12

900

3000

8500

Шейкерная сортировка

8, 10

1200

2000

7500

Метод Шелла