Сортировка, выпуклые оболочки
С сортировкой связаны многие фундаментальные приемы построения алгоритмов… Сортировка является идеальным применением огромного многообразия алгоритмов, выполняющих одну и ту же задачу, многие из которых в некотором смысле являются оптимальными, а большинство имеет какие-либо преимущества по сравнению с остальными. Поэтому на примере сортировки мы убеждаемся в необходимости сравнительного анализа алгоритмов. [Н.Вирт Алгоритмы+Структуры данных = Программы] Задача сортировки Для множеств объектов часто возникает задача построения последовательности, в которой эти объекты размещены в некотором порядке. Для определенных классов задач наличие порядка упрощает решение или повышает эффективность алгоритма решения задачи: в качестве примера можно сослаться на задачу поиска элемента в отсортированном множестве. Математически задача сортировки формулируется следующим образом: Задано конечное множество объектов
Эти свойства определяют отношение линейного порядка. Поскольку большинство алгоритмов сортировки требуют сравнения элементов, на элементах множества
Если Вообще говоря, имеющаяся информация об элементах множества Задача сортировки относится к числу фундаментальных задач при изучении алгоритмов, что неудивительно – отношение порядка занимает фундаментальное положение в математике в целом. Причинами такого положения вещей являются: 1. Сортировка является составной частью очень большого класса задач. Эффективность многих задач (задача поиска и пр.) на множествах зависит от порядка просмотра элементов и поэтому для решения основной задачи необходимо уметь сортировать исходные множества. 2. Сортировка – одна из немногих задач, для которой доказаны нетривиальные нижние оценки. Наличие нижних оценок позволяет оценить качество предлагаемых алгоритмов. 3. Оценка сложности проводится с использованием хорошо известных методов математического анализа, комбинаторики. Разные методы сортировки связаны между собой, и на этой модели хорошо проводить сравнительный анализ различных подходов к решению одной и той же задачи. 4. Введение ограничений на вычислительные ресурсы (с одной стороны - времени, а с другой - памяти) приводит к целой серии алгоритмов, использующих различные структуры данных. Можно анализировать и сравнивать между собой достоинства и недостатки применяемых структур (по паре критериев – времени и памяти).
Без потери общности можно считать, что элементы исходного множества просматриваются в определенном порядке, поэтому в дальнейшем речь будет идти о задаче сортировки последовательности объектов. Перед решением задачи необходимо понимать, как должны выглядеть конечные данные: должен ли алгоритм физически переставлять элементы исходной последовательности согласно значениям функции
При построении алгоритмов сортировки возникают проблемы, связанные с доступом к данным. По этому признаку алгоритмы сортировки делятся на два больших класса: алгоритмы внутренней сортировки, для которых существенным фактором является то, что сортируемые данные полностью размещаются в оперативной памяти с произвольным доступом и алгоритмы внешней сортировки, когда для размещения данных используется внешняя память, которая имеет ограниченный, как правило, последовательный доступ. Алгоритмы внешней сортировки также сортируют данные в оперативной памяти, но при этом загружают (и выгружают) имеющиеся данные по частям, а операции, связанные с обменом данных между внешней и оперативной памятью, составляют определяющую долю в расходе ресурса времени. В этом пособии мы ограничимся рассмотрением только алгоритмов внутренней сортировки. Все рассматриваемые методы будем иллюстрировать на сортировке последовательности 13, 11, 23, 10, 12, 18, 30, 8, 7, 6, 15, 21.
Читайте также: Воспользуйтесь поиском по сайту: ![]() ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|