Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Одесса / Iнформатика / Сортировка.doc
Скачиваний:
8
Добавлен:
10.02.2016
Размер:
439.81 Кб
Скачать

Сортировка

Сортировка (sorting) - один из наиболее сложных для изучения алгоритмов. Во-

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

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

определенному принципу. Часто требуется, чтобы данные были упорядочены не-

сколькими различными способами.

Во-вторых, многие алгоритмы сортировки являются интересными примерами

программирования. Они демонстрируют важные методы, такие как частное упо-

рядочение, рекурсия, объединение списков и сохранение двоичных деревьев в мас-

сивах.

У каждого алгоритма сортировки есть свои преимущества и недостатки. Про-

изводительность различных алгоритмов зависит от типа данных, начального рас-

положения, размера и значений. Важно выбрать тот алгоритм, который лучше все-

го подходит для решения конкретной задачи.

И наконец, сортировка - одна из немногих задач с точными теоретическими

границами производительности. Любой алгоритм сортировки, который использует

сравнения, занимает, по крайней мере, O(N * logN) времени. Некоторые алгоритмы

действительно имеют такую сложность, то есть являются оптимальными в отноше-

нии порядка сложности. Существует даже несколько алгоритмов, которые осуще-

ствляют сортировку не с помощью сравнений, и при этом работают быстрее, чем

0(N * logN).

Таблицы указателей

При сортировке элементов программа перестраивает их в некоторую струк-

туру данных. Скорость этого процесса зависит от типа элементов. Перемещение

целого числа на новую позицию в массиве может произойти намного быстрее,

чем перемещение структуры данных, определяемой пользователем. Если струк-

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

одного элемента может занять достаточно много времени. Гораздо проще сорти-

ровать указатели на реальные данные, копируя указатели из одной части массива

в другую.

Чтобы отсортировать массив объектов в определенном порядке, создайте мас-

сив указателей на объекты. Затем сортируйте указатели с помощью значений в со-

ответствующих записях данных.

Чтобы сортировать данные несколькими способами, создайте несколько ин-

дексных массивов и управляйте ими по отдельности. При вставке и удалении

записи необходимо отдельно обновлять каждый индексный массив.

Обратите внимание, что индексные массивы занимают дополнительную па-

мять. Если создать массив для каждого поля записи данных, то объем занимаемой

памяти более чем удвоится.

Сортировка выбором

Сортировка выбором (selection sort) - это простой алгоритм O(N2). Его зада-

ча - искать наименьший элемент, который затем меняется местами с элементом из

начала списка. Затем находится наименьший из оставшихся элементов и меняется

местами со вторым элементом. Процесс продолжается до тех пор, пока все элемен-

ты не займут свое конечное положение.

При поиске i-го наименьшего элемента алгоритм должен проверить каждый из

N - i оставшихся. Время выполнения алгоритма равно N + (N - 1) + (N - 2) + ... + 1

или O(N2).

Сортировка выбором работает достаточно хорошо со списками, где элементы

расположены случайно или в прямом порядке, но для обратно сортированных

списков производительность этого алгоритма немного хуже.

Соседние файлы в папке Iнформатика