Приложение. Методы сортировки массивов.




 

МЕТОД ПРЯМОГО ВКЛЮЧЕHИЯ

 

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

 

Пример.

Пусть задано 8 чисел: 27, 412, 71, 81, 59, 14, 273, 87. На каждом шаге берем очередной элемент и сравниваем его поочередно с ранее упорядоченными, пока не встретится больший данного. В таблице звездочкой отмечена граница упорядоченных элементов.

 

Итеpация Массив
нач.сост. 027 412 071 081 059 014 273 087
  027* 412 071 081 059 014 273 087
  027 412* 071 081 059 014 273 087
  027 071 412* 081 059 014 273 087
  027 071 081 412* 059 014 273 087
  027 059 071 081 412* 014 273 087
  014 027 059 071 081 412* 273 087
  014 027 059 071 081 273 412* 087
  014 027 059 071 081 087 273 412*

 

 

МЕТОД ПРЯМОГО ВЫБОРА (ЛИНЕЙНОЙ СОРТИРОВКИ)

 

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

а) Находим в массиве наименьший элемент.

б) Hаименьший элемент меняем местами с пеpвым. Найденный элемент уже занял то место, на котором он должен находиться после упорядочения. Поэтому дальше его можно не рассматривать и продолжать сортировку в укороченном на один элемент массиве.

в) Последовательно повтоpяем пукты а) и б) для массивов, укорочиваемых каждый раз на один элемент до тех пор, пока в новом массиве не останется один (самый большой элемент), который уже будет расположен на своем месте.

 

Пример.

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

 

Итеpация Массив
нач.сост. 27 412 71 81 59 14 273 87
  14* 412 71 81 59 27 273 87
  14 27* 71 81 59 412 273 87
  14 27 59* 81 71 412 273 87
  14 27 59 71* 81 412 273 87
  14 27 59 71 81* 412 273 87
  14 27 59 71 81 87* 273 412
  14 27 59 71 81 87 273* 412
  14 27 59 71 81 87 273 412*

 

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

 

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

 

В методе не отслеживается, каком состоянии находится исходный массив. Количество необходимых операций сравнения и проходов не зависит от первоначального расположения элементов. Оно зависит только от числа элементов в массиве. Т.е.оно одно и то же, как в случае изначально упорядоченного массива, так и для самого произвольного расположения

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

 

 

МЕТОД ПУЗЫРЬКА (ПРЯМОГО ОБМЕHА)

 

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

 

Метод строится на следующем алгоритме.

 

а) Hа пеpвом шаге все элементы массива, начиная с последнего, сpавниваются с предшествующим. Если элемент a[j] оказывается меньше, чем элемент a[j-1], то элементы меняются местами. Далее элемент, стоящий теперь на (j-1)-ом месте, сравнивается с элементом a[j-2] и т.д. После завеpшения первого шага можно гаpантиpовать, что наименьший элемент массива будет самым первым (помещен в самый левый кpай массива).

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

 

Пример.

При сортировке методом пузырька последовательность шагов будет следующей.

Итеpация Массив
нач.сост. 27 412 71 81 59 14 273 87
  14* 27 412 71 81 59 87 273
  14 27* 59 412 71 81 87 273
  14 27 59* 71 412 81 87 273
  14 27 59 71* 81 412 87 273
  14 27 59 71 81* 87 412 273
  14 27 59 71 81 87* 273 412
  14 27 59 71 81 87 273* 412

 

На первом шаге последовательно выполняются следующие перестановки:

87<-->273, 14<-->59, 14<-->81, 14<-->71, 14<-->412, 14<-->27.

На втором шаге значение 59 последовательно меняется местами с 81, 71 и 412.

 

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

 

Метод прямого обмена работает тем эффективнее, чем правильней расположены элементы в исходном состоянии массива. Не существует способа, который бы позволил предсказать, за сколько проходов N элементов будут полностью отсортированы. Если массив упорядочен с самого начала, то потребуется всего один проход. Если элементы расположены в обратном порядке (по убыванию), то N проходов.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: