Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
68
Добавлен:
06.06.2015
Размер:
379.07 Кб
Скачать

Алгоритм

Условно разделить массив А на отсортированную и несортированную части. Сначала весь массив — это несортированная часть.

цикл по i от 1 до N–1 с шагом 1 выполнять

//i – номер первого элемента в несортированной части массива r = i;

//Найти минимальный элемент в несортированной части массива:

цикл по j от i+1 до N с шагом 1 выполнять

если А[j] < A[r] то r = j;

конец цикла

//Найденный минимальный элемент поменять местами с

//первым элементом несортированной части:

если i r то Обмен (i, r);

//Он будет последним элементом новой сортированной

//части массива A.

конец цикла

Пирамидальная сортировка

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

Затем остаток входной последовательности вновь перестраивается в пирамиду, обеспечивая корректность следующего шага.

В начале i-го шага элементы h[1], .., ai, по предположению, хранят входную последовательность как пирамиду, а ai+1, .., aN – упорядоченную по возрастанию готовую последовательность (изначально пустую).

На i-м шаге текущий максимальный элемент пирамиды а1 обменивается с аi, становясь началом новой готовой последовательности, где он будет новым минимальным элементом. Входная последовательность (пирамида) при этом претерпевает два изменения:

— она теряет последний элемент, что не нарушает условий пирамиды ни в одном узле;

— ее первый элемент становится произвольным, что может нарушать условие пирамиды только в первом узле.

Сортировка, продолжение

Таким образом, для новой входной последовательности

a1, ..., ai-1

условия пирамиды выполнены для всех элементов, кроме первого.

Применение процедуры просеивания к a1

восстанавливает полную пирамиду в a1, ..., ai-1, что

обеспечивает условия осуществимости следующего

шага.