Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AlgStr / Библиотека / Разные источники / Сортировка - основные понятия и определения.doc
Скачиваний:
43
Добавлен:
23.03.2015
Размер:
150.53 Кб
Скачать

5

Сортировка Основные понятия и определения

В словарях слово "сортировка"(sorting) определяется как "рас­пределение, отбор по сортам; деление на категории, сорта, разря­ды", однако программисты обычно используют это слово в более узком смысле, обозначая им перегруппировку элементов в некото­ром определенном порядке. Этот процесс, пожалуй, следовало бы назвать не сортировкой, а упорядочиванием (ordering) или ранжи­рованием (sequencing). Однако слово "сортировка" уже прочно во­шло в программистский жаргон, поэтому мы будем в дальнейшем использовать слово "сортировка» в узком смысле - "сортировка по порядку". Зачем рассматриваются алгоритмы сортировки?

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

- большое разнообразие алгоритмов сортировки приводит к необходимости анализа этих алгоритмов (их производитель­ности);

- на примере алгоритмов сортировки легко проиллюстриро­вать, как путем усложнения алгоритмов (несмотря на суще­ствование простых и очевидных методов) добиться в выигры­ше эффективности.

Введем некоторые понятия и обозначения.

Частичным порядком на множествеS называется такое би­нарное отношениеR, что для любыха, b,с изS выполняются следующие условия:

- аRа(R— рефлексивно);

- аRb иbRс аRс (R— транзитивно);

- аRbиbRaa = b(К — антисимметрично).

Пример 1.

Отношение ≤ на множестве целых чисел (1 ≤ 2 ≤ … ≤ n).

Пример 2.

Отношениевключения множеств:

{0}{1}{2}{3}{1,2}{1,3}{2,3}{1,2,3}.

Линейным или полным порядком на множествеS называ­ется такой частичный порядокR наS, для которого для любых двух элементова иb изS выполняется либоaRbлибоaRb.

Отношение ≤ на множестве целых чисел — линейный порядок.

Отношение(включения множеств) — нет (например, нельзя связать отношением элементы {2} и {3}) .

Сформулируем теперь задачу сортировки.

Пусть дана последовательность из п элементовa1 ,а2,…,ап, которые назовем записями, выбранных из множества, на котором задан линейный порядок.

Каждая запись aj имеет ключkj , который и управляет про­цессом сортировки (помимо ключа, запись может иметь некоторую дополнительную информацию, которая не влияет на процесс сор­тировки, но всегда присутствует в этой записи).

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

≤ … ≤ .

Алгоритм сортировки называется устойчивым, если в процессе сортировки относительное расположение элементов с одинаковыми ключами не изменяется (предполагается, что элементы уже были отсортированы по некоторому вторичному ключу):

и

Хороший алгоритм сортировки затрачивает на сортировку п записей время порядкаnlogп .

Существуют более простые методы упорядочивания, которые затрачивают на сортировку время порядка n2(эти методы лег­ко понимать, они более коротки и для малых значенийп часто оказываются более быстродействующими).

Все алгоритмы сортировки можно разбить на три группы:

- сортировка с помощью включения (byinsertion);

- сортировка выбором (byselection);

- сортировка с помощью обменов (byexchange).