Учебное пособие Самара 2015 + 004. 43 Ббк 32. 973 Н 19


Download 1.98 Mb.
bet46/53
Sana15.08.2023
Hajmi1.98 Mb.
#1667321
TuriУчебное пособие
1   ...   42   43   44   45   46   47   48   49   ...   53
Bog'liq
Lekcii AiSD 2015

критерия выбора алгоритма:
средняя скорость сортировки (среднее время, удельная скорость);

  • скорость в лучшем и худшем случаях (или минимальное и максимальное время);

естественность поведения;

  • переставляются ли элементы с совпадающими значениями

(ключами).
Скорость (или время) сортировки определяется количеством операций сравнения и перестановки. У разных алгоритмов время работы находится в экспоненциальной или логарифмической за- висимости от числа элементов структуры данных (массива) N.
Nучшпй случай — это ситуация, когда структура данных уже отсортирована в нужном порядке, худший случай структура данных отсортирована в порядке, обратном требуемому. Время в лучшем и худшем случаях важны, если возможно частое повто- рение одной из этих ситуации. Часто при хорошей средней ско- рости алгоритмы имеют неприемлемую скорость в худшем слу- чае.
Естественность поведения означает, что если массив уже упорядочен, должно выполняться минимальное число операций (в идеале 0). Максимальное число операций выполняется, если массив отсортирован в обратном порядке.
Кроме перечисленных критериев при выборе алгоритма
следует принимать во внимание:

  • размер структуры данных, которую предстоит сортиро- вать (некоторые алгоритмы, высокоэффективные в средних слу- чаях, например быстрая сортировка, не показывают своей вы- сокой эффективности для массивов малого размера);

  • степень исходной упорядоченности сортируемых данных;

  • требования к необходимой памяти (разным алгоритмам может требоваться Я(1), О(Щ или O( N 2 памяти машины). Из-

вестно несколько примеров, когда эффективные алгоритмы тре-
168
буют таких больших объемов машинной памяти, что это сводит на нет все преимущества «эффективности» алгоритма;
трудоёмкость реализации алгоритма в сравнении со слож- ность решаемой в программе задачи (например, пирамидальная сортировка является одним из самых сложных алгоритмов сор- тировки). Эффективные, но сложные алгоритмы могут быть не- желательными, если готовые программы будут поддерживать люди, не участвовавшие в разработке этих программ. Необходи- мо предусмотреть возможность того, что эффективные, но доста- точно сложные алгоритмы не будут востребованы из-за своей сложности и трудоёмкости их изучения и освоения.



    1. Музырьковая сортировка

Самый простой алгоритм группы обменных сортировок (или сортировок перестановками) получил название пузырько- вой сортировки. Этот алгоритм считается самым простым из уни- версальных, одновременно являясь одним из самых малоэффек- тивных (т.е. медленных). Пузырьковая сортировка заключается в сравнении соседних элементов и, при необходимости, в их nepe- становке. При неубывающем упорядочении элементы «всплы- вают» как пузырьки каждый до своего уровня (а другие элементы одновременно «тонут»).


Кроме пузырьковой сортировки к группе обменных отно- сятся также быстрая сортировка и сортировка «расчёской». Следует отметить, что операция перестановки используется не только в алгоритмах обменной сортировки, но и во многих дру-



Описание алгоритма:
Используются два цикла. Внешний проходится N — 1 раз, это гарантирует, что даже в худшем случае каждый элемент бу- дет находиться на своем месте. В этом цикле устанавливается (смещается) граница между отсортированной и неотсортирован- ной частями структуры данных. Во внутреннем цикле выполня- ются непосредственно операции сравнения и перестановки. Пе- рестановка элементов производится методом «трёх вёдер»: со- держимое первого элемента помещается в буферную перемен- ную, на его место помещается содержимое второго элемента, на

169
место которого помещается из буфера «старое» содержимое пер- вого элемента. Количество проходов внутреннего цикла в каж- дом следующем проходе внешнего цикла уменьшается (от N — 1 до 1). Считается, что в среднем число проходов внутреннего цикла равно N/2. Процесс сортировки носит «треугольный» ха- рактер (рисунок 13.1).


Рассмотрим исходный массив символов, содержащий значе-
ния f, d, а, с, b, е.
В процессе работы программы массив будет изменяться следующим образом (показаны исходное состояние массива и его состояние после каждого прохода внешнего цикла):
Рис. 13.1 Изменение массива в процессе пузырьковой сорти- Рассматриваемый вариант алгоритма всегда выполняет

Download 1.98 Mb.

Do'stlaringiz bilan baham:
1   ...   42   43   44   45   46   47   48   49   ...   53




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling