Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmirovanie.docx
Скачиваний:
11
Добавлен:
24.04.2019
Размер:
2.07 Mб
Скачать

14. Основные понятия и принципы сортировки

Под сортировкой обычно понимают процесс перестановки объектов данного множества в определенном порядке. Цель сортировки — облегчить последующий поиск элементов в от­сортированном множестве.

В этом смысле элементы сорти­ровки присутствуют почти во всех задачах. Упорядоченные объекты содержатся в телефонных книгах, в ведомостях по­доходных налогов, в оглавлениях, в библиотеках, в словарях, на складах, да и почти всюду, где их нужно разыскивать. Даже маленьких детей приучают приводить вещи «в поря­док», и они сталкиваются с некоторым видом сортировки задолго до того, как узнают что-либо об арифметике.

Сортировки обычно разделяют на две категории: сортировка массивов и сортировка последовательных файлов. Их часто называют внутренней и внешней сортировкой, так, как массивы располагаются во внутренней памяти ЭВМ, а файлы хранятся в более медленной, но более вместительной «внешней» памяти, т.е. на запоминающих устройствах с механическим передвижением (дисках, лентах).

Единицей данных, обрабатываемых информационными системами, является запись, состоящая из ряда информационных полей. Ключом может быть содержимое одного поля записи (ключевого поля) или совокупности определенных полей. В последнем случае ключ называется составным. Запись может состоять из единственного поля, которое в дан­ном случае и будет являться ключевым. В результате упорядочивания записи располагаются по возрастанию или убыванию значений ключей. Так, записи, содержащие сведения о студентах факультета, могут быть упорядочены по номерам их зачетных книжек. Процесс упорядочивания записей по возрастанию или убыванию значений ключа называется сорти­ровкой.

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

число операций сравнения, выполняемых в процессе сортировки С и среднее число перестановок или обменов элементов. Эффективность сортировки определяется как частное от деления среднего числа срав­нений на число элементов массива.

15. Основные методы сортировки линейных структур данных

Процесс сортировки, проводимой любым методом, состоит из не­скольких циклов. В каждом цикле осуществляется просмотр всей после­довательности и производятся определенные операции с ее элементами. Один цикл обработки называется проходом.

В зависимости от используемого метода сортировки упорядоченная последовательность размещается на том же участке памяти, что и исход­ная, или требует для своего формирования свободного участка памяти. В первом случае метод, минимален по памяти. Рассмотрим основные мето­ды сортировки.

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

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

Для сорти­ровки последовательности из N элементов требуется N— 1 проходов, так как на каждом проходе в соответствующую позицию упорядоченной последовательности заносится только один элемент.

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

В процессе сортировки производится по­парное сравнение соседних элементов. Если порядок между сравнивае­мыми элементами нарушен, они меняются местами. Этот метод обмена называется часто методом пузырька, так как наименьшие эле­менты с каждым проходом, подобно пузырькам, "всплывают" по направлению к первой позиции последовательности. Число проходов равно N — 1

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

П ервый элемент Аi исходной последовательности А занимает пер­вую позицию в свободном участке памяти, т.е. становится первым элементом B1 последовательности D. Элемент А2 сравнивается c B1. Если

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

Метод подсчета. Упорядоченная последовательность В создается в свободной области памяти в результате сортировки исходной последо­вательности А.

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

Метод Шелла. Этот широко используемый метод, предложенный Д.Л. Шеллом в 1959 г., минимален по памяти и обеспечивает высокую скорость сортировки. Метод использует сравнения и перестановки элементов, как и метод вставок, однако в отличие от последнего в срав­нении участвуют не соседние элементы, а отстоящие друг от друга на определенном расстоянии. При необходимости перестановки элементы перемещаются скачком на это же расстояние, а не на одну позицию, как в методе вставок.

Для проведения сортировки описываемым методом последователь­ность из N элементов делится на N/2 групп или на (N - 1) /2, если N не­четно. Каждая группа содержит по два элемента. Если число элементов нечетно, то одна часть будет содержать три элемента. Элементы, принад­лежащие одной труппе, отстоят на N/2 позиций. Это расстояние называют шагом. На рис. 11.5, иллюстрирующем этот метод, одиннадцать элемен­тов исходной последовательности А разделены на пять групп с шагом, равным пяти. Элементы, принадлежащие одной группе, объединены скобками. Для сортировки последовательности из N элементов требуется около lоg2 N проходов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]