发布网友 发布时间:2022-04-24 17:02
共1个回答
热心网友 时间:2023-10-24 11:44
在你的HeapSort应该加一段初始化为最小堆的代码,然后再进入那个for循环。BuildHeap建堆的过程是至上而下的,也就是说j的值变成 2*j或 2*j+1,而不是j/=2.
如果按你这样的方法构建会出现这样的交换过程:
1.8 2 3 1
2.8 1 3 2
3.1 8 3 2
显然不是最小堆,正确的应该是1 2 3 8
你可以看一下这个:http://blog.csdn.net/ouyangying123/article/details/51334165