Заказать курсовые, контрольные, рефераты...
Образовательные работы на заказ. Недорого!

Фундаментальность задачи. 
Классика алгоритмизации

РефератПомощь в написанииУзнать стоимостьмоей работы

Так как процедура сортировки дерева полностью аналогична построению дерева методом просеивания вверх, только производится «в обратном порядке»: пирамида не строится, а «разбирается» элемент-за-элементом, и элементы просеиваются не вверх, а вниз, то время работы алгоритма пирамидальной сортировки будет определяться аналогично формуле (4): Будем удалять элементы из корня по одному за раз… Читать ещё >

Фундаментальность задачи. Классика алгоритмизации (реферат, курсовая, диплом, контрольная)

Многие ученые в области вычислительной техники рассматривают эту задачу как наиболее фундаментальную при изучении алгоритмов. Тому есть несколько причин:

  • 1. Часто в алгоритмах сортировка используется в качестве ключевой подпрограммы.
  • 2. Имеется большой выбор алгоритмов сортировки, в которых применяются самые разные технологии. Фактически в алгоритмах сортировки используются многие важные методы, применяемые при разработке различных классов алгоритмов. В этом отношении задача сортировки представляет также исторический интерес.
  • 3. В процессе реализации алгоритмов сортировки на передний план выходят многие прикладные проблемы. Выбор наиболее производительной программы сортировки зависит от многих факторов, многие из которых лучше решать на уровне алгоритма, а не настройкой кода.

Пирамидальная сортировка

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

  • 1. Каждый лист имеет глубину либо, либо , — максимальная глубина дерева.
  • 2. Значение в любой вершине не меньше (другой вариант — не больше) значения её потомков.

Удобная структура данных для сортирующего дерева — такой массив Array, что Array[1] — элемент в корне, а потомки элемента Array[i] являются Array[2i] и Array[2i+1].

Фундаментальность задачи. Классика алгоритмизации.

Алгоритм сортировки будет состоять из двух основных шагов:

  • 1. Выстраиваем элементы массива в виде сортирующего дерева
  • 2. Будем удалять элементы из корня по одному за раз и перестраивать дерево. То есть на первом шаге обмениваем Array[1] и Array[n], преобразовываем Array[1], Array[2], …, Array[n-1] в сортирующее дерево. Затем переставляем Array[1] и Array[n-1], преобразовываем Array[1], Array[2], …, Array[n-2] в сортирующее дерево. Процесс продолжается до тех пор, пока в сортирующем дереве не останется один элемент.

Рассчитаем быстродействие построения сортирующего дерева в самом плохом случае. Пусть массив уже отсортирован по возрастанию, и каждый добавляемый элемент вынужден просеиваться вверх до самого корня. Тогда при добавлении элемента номер i нам потребуется операций. Мы делаем эту процедуру для всех i от 0 до :

(1).

Фундаментальность задачи. Классика алгоритмизации.

Оценим сумму в выражении (1) с помощью определённого интеграла:

(2).

Фундаментальность задачи. Классика алгоритмизации.

Вычисляя интегралы, получаем:

(3).

Фундаментальность задачи. Классика алгоритмизации.

Это означает, что затраченное время T (n) равно.

(4).

Так как процедура сортировки дерева полностью аналогична построению дерева методом просеивания вверх, только производится «в обратном порядке»: пирамида не строится, а «разбирается» элемент-за-элементом, и элементы просеиваются не вверх, а вниз, то время работы алгоритма пирамидальной сортировки будет определяться аналогично формуле (4):

алгоритм сортировка эффективность Пирамидальная сортировка была предложена Дж. Уильямсом в 1964 году.

Достоинства:

Имеет доказанную оценку худшего случая.

Не требует дополнительной памяти.

Недостатки:

Сложен в реализации.

На почти отсортированных массивах работает столь же долго, как и на хаотических данных.

Показать весь текст
Заполнить форму текущей работой