Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочная информация по алгоритмам.doc
Скачиваний:
34
Добавлен:
20.06.2014
Размер:
399.87 Кб
Скачать

3.7 Внешняя сортировка

1 этап. Разбиение на участки возможной длины, которые сортируются по какому-либо алгоритму внутренней сортировки. Отсортированные участки разносятся по Nвнешним ЗУ.

2 этап. N-ленточное слияние. Данные с ВЗУ объединяются в единый массив с учетом присутствующей упорядоченности. После этого исходный массив опять разносится наNустройств. Процедура повторяется до тех пор, пока не будет получена полная упорядоченность. Размер упорядоченных групп возрастает после каждого слияния вNраз. Количество слияний –N.

3.8 Факторы, учитываемые при выборе метода сортировки.

  1. Размер массива. Оценка количества записей в массиве, подлежащего сортировке, позволяет установить необходимость внешней сортировки, а также необходимость использования методов с минимальными затратами памяти.

  2. Длина ключа. Длина и место расположения ключа в пределах записи определяет время, необходимое для операции сравнения. При этом выясняется, является ли ключ полем записи, к которому возможен непосредственный доступ или необходимы дополнительные меры, позволяющие извлечь ключ из записи. В последнем случае оценивается время, требуемое для извлечения ключа. Например, сортировка по имени. Имя вводится как строчка, состоящая из имени и отчества, которые вводятся вручную и могут содержать произвольное количество пробелов в качестве разделителя. Таким образом, при сортировке из строки потребуется удалить пробельные символы. Наряду с этим необходимо знать, соответствует ли ключ структуре данных, непосредственно обрабатываемой ЭВМ и зависит ли время сравнения от числа символов в ключе. После проведения этих оценок, возможной становится необходимость предварительной обработки ключа с целью перевода его в более удобную форму.

  3. Вид ключей. Время сравнения зависит от внутреннего представления данных, например у некоторых ЭВМ может отсутствовать команда сравнения десятичных чисел. В этом случае время преобразования в двоичный формат добавляется к времени сравнения.

  4. Исходное распределение данных. В большинстве случаев распределение записей в исходной последовательности является случайным, т.е. любой из порядков следования ключей равновероятен, однако, является возможным, что процедура сбора данных обеспечивает частичное упорядочивание. Выявление закономерностей в исходном распределении записей позволит выбрать метод сортировки, обеспечивающий минимальное число сравнений при данном распределении ключей. Например, существует телефонная база, упорядоченная по значению поля Фамилия, для нее сформировано обновление, содержащее список новых абонентов. Метод – вставок или слияние.

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

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

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