2013-12-18 1 views
0

Просто общий вопрос ....Является ли heapsort более эффективным при использовании на minheap или maxheap?

Подтверждая название:

Является пирамидальная сортировка более эффективен при использовании на minheap или maxheap?

Примечание: Использование массива на основе реализации

+0

Алгоритм идентичен. Меняются только сравнения. – EJP

+0

Так я думал, что вы просто меняете сравнение с if (x> y) на if (x Riptyde4

+0

Err, это * - * ответ. – EJP

ответ

0

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

Куча сортировки работает в основном путем помещения всех элементов в кучу (мин.), А затем, когда они находятся в порядке кучи, многократно удаляя минимальный элемент до тех пор, пока куча не станет пустой, предоставив нам данные в порядке возрастания. Это O (nlogn), поскольку мы выполняем линейные проходы через данные, а куча поддерживает вставку/удаление log n для работы, которую мы делаем для каждого элемента данных.

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

+0

Я думаю, что это наоборот ... Это на самом деле помещает их в кучу. На каждой итерации алгоритм удаляет корень и помещает его в конец массива, а затем вызывает heapify для замены наибольшего числа в корне: P – Riptyde4

+0

Oh. Виноват. В любом случае, похоже, что они взаимозаменяемы! В школе меня учили, что она использует кучу минут! –

+0

он не называет heapify *** он называет перколяцию вниз от n/2 до индекса 2. Ха-ха, я просто читал об этом, он говорит это прямо здесь, в моей книге ... то же самое по существу – Riptyde4

Смежные вопросы