Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metodichka_po_Pascal_2_chast.doc
Скачиваний:
107
Добавлен:
18.02.2016
Размер:
5.11 Mб
Скачать

Алгоритмы сортировки

Сортировка - это процесс упорядочивания наборов данных одного типа по возрастанию/неубыванию или убыванию/невозрастанию значения какого-либо признака.

Например,

25 10 5 76 — неотсортированный массив целых чисел

5 10 15 20 25 — отсортированный по возрастанию массив целых чисел

25 20 15 10 5 — отсортированный по убыванию массив целых чисел

Пусть имеется некоторая последовательность элементов а, размерности . Тогда, если для любоговыполнено условие

- , то упорядоченпо возрастанию

- , то упорядоченпо убыванию

- , то упорядоченпо невозрастанию

- , то упорядоченпо неубыванию

Сортировка

Внутренняя

(сортировка массивов)

Внешняя

(сортировка файлов)

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

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

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

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

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

- Стратегия распределения. Входное множество разбивается на ряд подмножеств (возможно, меньшего объема) и сортировка ведется внутри каждого такого подмножества.

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

Из всех задач программирования сортировка, возможно, имеет самый богатый выбор алгоритмов решения. Назовем некоторые факторы, которые влияют на выбор алгоритма (помимо порядка алгоритма).

Объём исходного множества.

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

  • Исходная упорядоченность входного множества: во входном множестве (даже если оно сгенерировано датчиком случайных величин) могут попадаться упорядоченные участки. В предельном случае входное множество может оказаться уже упорядоченным. Одни алгоритмы не учитывают исходной упорядоченности и требуют одного и того же времени для сортировки любого (в том числе и уже упорядоченного) множества данного объема, другие выполняются тем быстрее, чем лучше упорядоченность на входе.

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

  • Сложность алгоритма является не последним соображением при его выборе. Простой алгоритм требует меньшего времени для его реализации и вероятность ошибки в реализации его меньше. При промышленном изготовлении программного продукта требования соблюдения сроков разработки и надежности продукта могут даже превалировать над требованиями эффективности функционирования.

Методы сортировки массивов

Прямые

Улучшенные

- Сортировка обменом (метод «пузырька»).

- Сортировка выбором (выделения).

- Сортировка вставками (включения).

- Сортировка вставками (включения).

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

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

Суть: массив условно разделяется на 2 части: отсортированную и не отсортированную. Элементы из не отсортированной части поочерёдно выбираются и вставляются в отсортированную часть так, чтобы не нарушить в ней упорядоченность элементов. В начале работы алгоритма в качестве отсортированной части принимают только один первый элемент, а остальные элементы — в качестве не отсортированной. Вставку элемента на нужное место готовой части массива можно осуществить следующим образом: рассматриваемый элемент x сравниваем с очередным элементом massj готовой матрицы, а затем либо х вставляется на свободное место, либо massj сдвигается вправо и процесс «уходит» влево.

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

- в отсортированной последовательности найден элемент- со значением, меньшим чем первый элемент не отсортированной последовательности;

- достигнута левая граница готовой (отсортированной) последовательность.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]