Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмы сортировки данных.doc
Скачиваний:
1
Добавлен:
29.06.2024
Размер:
429.57 Кб
Скачать

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

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

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

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

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

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

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

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

2Размещение данных, основанное на преобразовании кода записи в ее адрес

2.1Хеширование данных

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

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

Рис.. Хеш-таблица

Идеальной хеш-функцией является такая hash-функция, которая для любых двух неодинаковых ключей дает неодинаковые адреса.

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

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