Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л7_2012 мас_ы.doc
Скачиваний:
2
Добавлен:
19.11.2019
Размер:
88.06 Кб
Скачать
  1. Задача сортировки.

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

Формально процессом сортировки называют операцию упорядочения некоторого множества по ключу. Здесь есть и новые понятия, и известные. В предыдущем примере МНОЖЕСТВО учеников учитель упорядочил по алфавиту, что вполне естественно. Ключ к этой задаче — фамилия ученика. Конечно, бывают и более сложные процессы сортировки, при которых требуется упорядочение по нескольким ключам. Тогда скорректированное определение процесса сортировки выглядит так: процессом сортировки называют операцию упорядочения некоторого множества по ключам.

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

Алгоритмы сортировки отличаются разной степенью сложности. Здесь под сложностью понимается максимальное число элементарных шагов алгоритма.

Рассмотрим процесс заполнения журнала фамилиями студентов, например. На первом шаге преподаватель должен выбрать фамилию студента на первое место в журнале. Для этого ему потребуется просмотреть все множество фамилий. Затем, изъяв эту фамилию из неупорядоченного списка-множества, преподаватель помещает ее в журнал. На втором шаге он снова просматривает множество фамилий, выбирая претендента на второе место в журнале. Этот шаг потребует уже на один просмотр меньше. И так далее, пока множество не исчерпается и все фамилии студентов не перекочуют в журнал упорядоченными по алфавиту.

Пусть в классе 40 студентов. Тогда первый шаг потребует 40 просмотров, второй 39=40—1, третий 38=:40—2 и т.д. И по известной формуле (арифметической прогрессии) получается, что всего потребуется 40* (40+1) /2 =820 просмотров. В общем случае формула выглядит так: N*(N+1)/2,

где N — число учеников в классе.

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

Алгоритмов сортировки существует много. Некоторые из них мы рассмотрим на практических занятиях, а сегодня разберем метод сортировки выбором.

Сортировка выбором состоит в том, что сначала в неупорядоченной последовательности выбирается минимальный (или максимальный) элемент. Этот элемент исключается из дальнейшей обработки, а оставшаяся последовательность элементов принимается за исходную, и процесс повторяется до тех пор, пока все элементы не будут выбраны. Очевидно, что выбранные элементы образуют упорядоченную последовательность.

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

  1. Минимальный элемент после i -го просмотра перемещается на i-e место (i=1, 2,3, . . . ) другого массива, а в старом, исходном, на месте выбранного размещается какое-то очень большое число, превосходящее по величине любой элемент сортируемого массива. Измененный таким образом массив принимается за исходный, и осуществляется следующий просмотр. Очевидно, что при этом размер обрабатываемого массива остается постоянным.

  2. Минимальный элемент после i-ro просмотра перемещается на i-e место (i=l, 2,3, . . .) заданного массива, а элемент с i-ro места — на место выбранного. После каждого просмотра упорядоченные элементы (от первого до элемента с индексом i) исключаются из дальнейшей обработки, т.е. размер каждого последующего обрабатываемого массива на 1 меньше размера предыдущего.

8