Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Гриценко, Методичка по информатике 3.11.2004.doc
Скачиваний:
2
Добавлен:
27.10.2018
Размер:
640.51 Кб
Скачать

5 Сортировка массивов

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

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

·         количество присваиваний;

·         количество сравнений.

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

·         прямые методы сортировки;

·         улучшенные методы сортировки.

         Прямые методы сортировки по принципу, лежащему в основе метода, в свою очередь разделяются на три подгруппы:

·         сортировка вставкой (включением);

·         сортировка выбором (выделением);

·         сортировка обменом (пузырьковая сортировка).

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

5.1 Сортировка вставкой

Принцип метода: Массив разделяется на две части: отсортированную и не отсортированную. Элементы из не отсортированной части поочередно выбираются и вставляются в отсортированную часть так, чтобы не нарушить в ней упорядоченность элементов. В начале работы алгоритма в качестве отсортированной части массива принимают только один первый элемент, а в качестве не отсортированной части - все остальные элементы. При этом методе элементы мысленно делятся на уже "готовую" последовательность a1, ..., аi-1 и исходную последовательность. При каждом шаге, начиная с i=2 и увеличивая i каждый раз на единицу, из исходной последовательности извлекается 1-й элемент и перекладывается в готовую последовательность, при этом он вставляется на нужное место.

Таким образом, алгоритм будет состоять из n-1 прохода (n - размерность массива), каждый из которых будет включать четыре действия:

· взятие очередного i-го не отсортированного элемента и сохранение его в дополнительной переменной;

· поиск позиции j в отсортированной части массива, в которой присутствие взятого элемента не нарушит упорядоченности элементов;

· сдвиг элементов массива от i-1- го до j-1-го вправо, чтобы освободить найденную позицию вставки;

· вставка взятого элемента в найденную j-ю позицию.

Общее число сравнений и пересылок равно:

Cmin=n-1                     Cavg=(n2+n-4)/4          Cmax=(n2+n-2)/4

Mmin=3*(n-1)             Mavg=(n2+n-10)/4       Mmax=(n2+3*n-4)/2

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

5.2 Сортировка обменом

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

После одного такого прохода на последней n-ой позиции массива будет стоять максимальный элемент (“всплыл” первый “пузырек”). Поскольку максимальный элемент уже стоит на своей последней позиции, то второй проход обменов выполняется до n-1-го элемента. И так далее. Всего требуется n-1 проход.

Число сравнений равно С = (n2 - n)/2, число перемещений

Mmin=0;             Mavg=3*(n2-n)/4;          Mmax=3*(n2-n)/2.