Является ли отсортированный массив min-кучей? Каково минимальное значение max-heap?

Я изучил min-heaps и max-heaps, и у меня есть пара вопросов:

  1. - Это отсортированный массив a мин-кучи?
  2. каково минимальное значение max-heap?

7 ответов


массив, отсортированный от самого низкого до самого высокого, является минимальной кучей при использовании реализации кучи на основе массива. Свойство кучи, что родительский узел больше, чем дочерние узлы (2i + 1 и 2i + 2, используя массивы на основе нуля), выполняется для всех узлов, имеющих дочерние узлы.

минимальное значение максимальной кучи находится в одном из листовых узлов, но вы не знаете, какой. Поскольку минимальный узел по определению не может иметь дочерних узлов, он должен быть листом. Однако свойство heap не укажите, как листовые узлы сравниваются друг с другом, только со своим родителем.


- Это отсортированный массив a мин-кучи?

да, если вы используете типичное соглашение кучи, хранящееся в массиве.

где минимальное значение max-кучи?

на одном из листьев. Что именно не определено.


вы можете реализовать двоичную кучу в виде массива для индекса I по сравнению с 2 * i+1 и 2*i+2 (I начинается с 0). в Мин куче a[i]

Так

1 . Отсортированный массив-это минимальная куча.

2 . Он не имеет конкретного индекса. Все мы знаем, что это просто лист

Я предлагаю вам прочитать это http://en.wikipedia.org/wiki/Binary_heap


где-минимальное значение Макс кучи?

Ans: максимальная куча может быть представлена с помощью простого массива с индексом от 1 до n. 1-й элемент является корнем максимальной кучи. Свойство кучи: узел в индексе i имеет левый дочерний элемент в 2i и правый дочерний элемент в 2i+1 (Если 2i и 2i+1 меньше размера кучи, т. е. длины массива).

листовые узлы максимальной кучи находятся от индекса i+1 до n. Здесь i=n/2; n-длина массива. И один из листовых узлов имеет минимальное значение.
Так мы можем найти минимальное значение max heap от значений a[i+1] до a[n]. Сложность времени для поиска минимального значения-порядок (n-i).


  • отсортированный массив-это минимальная куча?

если он упорядочен по возрастанию-да, вообще говоря, это минимальная куча, точнее -реализация массива двоичной кучи со следующими правилами:

  • дочерние элементы узла с индексом я можно найти в индексах 2i + 1 и 2i + 2
  • родитель узла с индексом я can найти по индексу этаж ((i - 1)/2)

в то же время он не работает в обратном направлении - двоичная куча на основе массива не будет хранить отсортированный список.

  • где-минимальное значение Макс кучи?

он не определен, и это не тот вопрос, который вы хотите быстро ответить, когда вы храните ваши ключи в минимальной куче. Если вы хотите иметь возможность заглянуть как min, так и max кучи в O (1) время, вы можете используйте такие классы, как MinMaxPriorityQueue в Java.


- Это отсортированный массив a мин-кучи?

сортированный массив-это либо min-heap, либо max-heap, но наоборот не true
min-heap или max-heap не обязательно являются отсортированными массивами.

каково минимальное значение max-heap?

max-heap(или очередь приоритетов) по определению предоставляет максимальное значение из коллекции за O (1) Время. если кто-то должен получить минимальное значение из max-кучи, то используя сама куча в первую очередь для этой проблемы не подходит. это похоже на ожидание, что стек предоставит доступ FIFO или очередь предоставит доступ LIFO.

но jfyi , минимальное значение будет на одном из листьев дерева, образованной кучи. это может быть на любом поддереве. поэтому вам нужен другой алгоритм, который займет больше времени, чем O(1), чтобы найти его.

В качестве примечания:
Куча с n элементами может иметь [от 1 до (n+1)/2] листьев.
Если высота дерева, образованного кучей есть h тогда куча будет иметь до 2^(h-1) листьев


массивы могут быть отсортированы по возрастанию или по убыванию. Утверждение "сортируемый массив-это min-heap" является частично правильным. Правильная версия этого оператора: "массив, отсортированный в порядке возрастания, можно рассматривать как min - heap", а его оператор complementry - "массив, отсортированный в порядке убывания, можно рассматривать как max heap".

"массив, отсортированный в порядке возрастания, можно рассматривать как min-heap"

но помните, что "не все мин-кучи может принимать форму массива, отсортированного по возрастанию".

и о минимальном значении max heap мы знаем только то, что это присутствует в листьях, и мы можем искать это в O(n)