- •Программирование
- •1. Архитектура машинной памяти
- •2. Внешние запоминающие устройства.
- •3. Адресация памяти.
- •4. Три уровня представления данных в автоматизированных информационных системах.
- •5. Внутренняя структура записи
- •6. Типы структур данных
- •9. Способы хранения, основанные на преобразовании кода записи в ее адрес
- •10. Массивы
- •11. Стеки
- •12. Очередь
- •13. Таблица
- •14. Основные понятия и принципы сортировки
- •15. Основные методы сортировки линейных структур данных
- •16. Внешняя сортировка
- •17. Основные принципы информационного поиска
- •18. Последовательный поиск
- •20. Двоичный поиск
- •21. Блочный поиск
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 проходов.
