堆初始化是什么意思?

时间:2018-11-26 12:51:49

标签: java algorithm sorting

我正在为数据结构类进行编码分配。我基本上必须实现不同的排序算法(选择排序,快速排序等)并比较运行时间。

但是,在指令中,它说我必须实现两种不同的堆排序算法。这是说明:

  
      
  1. 堆排序,而不使用“堆初始化”(即,将数字重复插入   最初是空的堆)

  2.   
  3. 使用堆初始化的堆排序

  4.   

在这里,我不确定堆初始化是什么意思。我试图用Google搜索它,但是找不到任何可以很好解释的资源。通过/不使用堆初始化实现堆排序是什么意思?

我正在用Java编写代码以供参考!

谢谢

1 个答案:

答案 0 :(得分:5)

区别在于您如何获得初始堆。

https://en.wikipedia.org/wiki/Binary_heap(正在构建堆部分)。

存在William的方法,您可以将元素一个接一个地插入到堆中(最初是空的)。这是O(NlogN)。这是未初始化的版本。

有Floyd的版本,您可以在其中获取数组并进行一些交换以使其成为堆。这将是O(N)(有关数学信息,请查看维基百科)。伪代码可在Wikipedia上获得。

总体复杂度是由提取过程O(NlogN)驱动的。