Сортировки
Общие понятия
Сортировка – процесс перегруппировки однотипных элементов структуры данных в определенном порядке. Цель сортировки – облегчить последующие поиск, обновление, исключение, включение элементов в структуру данных. Разработано множество алгоритмов сортировки, однако нет алгоритма, который был бы наилучшим в любом случае.
Общие понятия
Общие понятия
Методы сортировки разбивают на два класса: Внутренняя сортировка – сортировка массивов в ОЗУ. Внешняя сортировка – сортировка файлов или сортировка последовательностей. Метод сортировки называется устойчивым, если в процессе сортировки относительное расположение одинаковых (по ключу) элементов не изменяется.
Внутренняя сортировка
Внутренняя сортировка
Сортировка методом прямого включения
Имеется последовательность элементов: А0, А1, А2, …, Аn-1 Эта последовательность делится на две последовательности: упорядоченную последовательность и исходную, неупорядоченную. Первоначально упорядоченная последовательность состоит из единственного элемента А0. При каждом шаге, начиная с i = 1 и увеличивая i каждый раз на единицу, из исходной последовательности извлекается i-й элемент Аi и вставляется в готовую последовательность в место, при необходимости сдвигая элементы готовой последовательности на одну позицию вправо вплоть до i-й позиции.
Сортировка методом прямого включения
Для процедуры сортировки методом прямого включения число сравнений С и число пересылок М таковы: Cmin = n-1; Cсред = (n²+n-2); Cmax = (n²-n)/2-1; Mmin = 2(n-1); Mсред = (n²+9n-10)/4; Mmax = (n²+3n-4)/2. Алгоритм можно улучшить, если место включения искать методом двоичного (бинарного) поиска. Среднее число сравнений здесь С = O(n*log2n), а среднее число сдвигов М = O(n²).
Сортировка методом прямого включения
Пример 27 412 71 81 59 14 273 87 i=1 27 412 71 81 59 14 273 87 i=2 27 71 412 81 59 14 273 87 i=3 27 71 81 412 59 14 273 87 i=4 27 59 71 81 412 14 273 87 i=5 14 27 59 71 81 412 273 87 i=6 14 27 59 71 81 273 412 87 i=7 14 27 59 71 81 87 273 412
Сортировка методом прямого выбора
Сортировка методом прямого выбора
Для процедуры сортировки методом прямого выбора число сравнений С и число пересылок М таковы: Cсред = (n²-n); Mmin = n-1; Mсред = n(ln n+g); Mmax = n²/4+3(n-1), где g = 0.577216 – константа Эйлера Отсюда алгоритм с прямым включением несколько предпочтительнее алгоритма прямого включения. Однако, если ключи вначале упорядочены, то прямое включение будет несколько быстрее.
Сортировка методом прямого выбора
Пример 27 412 71 81 59 14 273 87 i=1 14 412 71 81 59 27 273 87 i=2 14 27 71 81 59 412 273 87 i=3 14 27 59 81 71 412 273 87 i=4 14 27 59 71 81 412 273 87 нет i=5 14 27 59 71 81 412 273 87 i=6 14 27 59 71 81 87 273 412 нет i=7 14 27 59 71 81 87 273 412
Сортировка методом прямого обмена
Сортировка методом прямого обмена
Для процедуры сортировки методом прямого обмена число сравнений С и число пересылок М таковы: Cmin = n, Cсред = (n²-n)/2; Mmin = 0; Mсред = 3(n²-n)/4; Mmax = 3(n²-n)/2
Сортировка методом прямого обмена
Пример. (Первый проход). 27 412 71 81 59 14 273 87 i=1 27 412 71 81 59 14 87 273 i=2 27 412 71 81 59 14 87 273 i=3 27 412 71 81 14 59 87 273 i=4 27 412 71 14 81 59 87 273 i=5 27 412 14 71 81 59 87 273 i=6 27 14 412 71 81 59 87 273 i=7 14 27 412 71 81 59 87 273
Сортировка методом прямого обмена
Пример. 27 412 71 81 59 14 273 87 j=1 14 27 412 71 81 59 87 273 j=2 14 27 59 412 71 81 87 273 j=3 14 27 59 71 412 81 87 273 j=4 14 27 59 71 81 412 87 273 j=5 14 27 59 71 81 87 412 273 j=6 14 27 59 71 81 87 273 412
Шейкерная сортировка
Особенностью пузырьковой сортировки является то, что легкий пузырек всплывает сразу, за один проход от конца последовательности к ее началу, где бы он не находился, в то время как тяжелый пузырек тонет очень медленно, на одну позицию за один проход. Если бы изменить направление просмотра, то тяжелый элемент опустился бы вниз за один проход. Это свойство используется в алгоритме шейкерной сортировки, в котором
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.