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

14. Метод вставок

При использовании этого метода сортировки упоря­доченная последовательность создается на свободном участке памяти. Под сортировку выделяется объем памяти, равный длине отсортиро­ванного массива записей. Так как исходная и упорядоченная последо­вательности располагаются в разных участках памяти, используем для их обозначения различные символы. Элементы исходной последователь­ности обозначим Аi, а элементы упорядоченной последовательнос­ти - Bj

Первый элемент А1 исходной последовательности А занимает пер­вую позицию в свободном участке памяти, т.е. становится первым элементом B1 последовательности B. Элемент А2 сравнивается с В1. Если в результате сравнения оказалось, что А2< В1, то элемент B1 передви­гается на одну позицию, а элемент А2 занимает его прежнее место. Теперь в свободном участке памяти размещены два элемента В1 и В2, образующих последовательность, упорядоченную по возрастанию значе­ний ключа.

В течение каждого i-го прохода процесса сортировки элемент Ai сравнивается поочередно со всеми элементами последовательности В на­чиная с В1. При обнаруженииBj , большего Ai,элементы Bj,Bj+1, Bj+2...Bi-1

передвигаются на одну позицию, освобождая место для элемента Ai, который занимает j-ю позицию.

Последовательность из N элементов будет отсортирована за N проходов. В первом проходе сравнений не требуется, так как первый элемент просто размещается в первой ячейке памяти. В дальнейшем в течение каждого i-го прохода будет выполнено в худшем случае i -1 сравнение. Худшим окажется тот случай, когда исходная последовательность уже отсортирована в нужном порядке. Сmax= сумма (от i=1 до N-1)(N-i)=0.5N(N-1)

15. Метод подсчета

Упорядоченная последовательность В создается в свободной области памяти в результате сортировки исходной последо­вательности А. Метод основан на том, что (К + 1)-й элемент упорядочен­ной последовательности превышает ровно К элементов и, следовательно, занимает + 1)-ю позицию. В процессе сортировки на каждом i-м про­ходе i-й элемент исходной последовательности попарно сравнивается со всеми остальными элементами. Если в результате сравнения установле­но, что Ai > Aj, то значение числа К увеличивается на единицу. По окон­чании прохода значение К оказывается равным числу элементов, мень­ших чем Аi. Номер позиции i-го элемента в последовательности В равен К+1.

Пример сортировки методом подсчета приведен на рис. 11.4. В ре­зультате первого прохода устанавливается, что первый элемент исходной последовательности А (1) = 10 оказался больше четырех элементов и для него устанавливается К = 4. Этот элемент займет пятую позицию в упорядоченной последовательности В. Аналогично определяются позиции всех остальных элементов последовательности.

Для сортировки последовательности из N элементов требуется N про­ходов, на каждом проходе выполняется N сравнений. Число проходов и сравнений не зависит от степени упорядоченности исходной последова­тельности . Поэтому ддя данного метода максимальное, минимальное и среднее число сравнений равно N2.

Рассмотренный алгоритм сортировки методом подсчета можно использовать лишь в тех случаях, когда в исходной последовательности отсутствуют одинаковые элементы, иными словами, когда в упорядочи­ваемом массиве нет записей с одинаковыми значениями ключей. Для сортировки массивов, имеющих записи с одинаковыми значениями клю­чей, алгоритм нужно модифицировать.