摘要:
最近在学习堆排序,安装堆排序的思路自己写了个程序,但是发现存在一点问题。按照堆排序的思想,建完大顶堆后,根节点与最后一个叶子节点交换,然后剩下的重新建堆。但是按照我下面的程序,并不能建成一个堆,也就是说最后一次交换是发生在根节点和第一层节点之间,但是根节点有可能小于第三层节点中的数,交换之后就违背了堆的定义(根节点大于或小于子结点),因此说不能建成堆。但是最终排序的结果确实对的,而且还省去了一次比较,应该是程序的效率更高才是。不知道程序这样写对不对? 1 #include "stdafx.h" 2 3 #include <iostream> 4 5 using 阅读全文
posted @ 2011-09-19 23:32
ismy
阅读(304)
评论(0)
推荐(0)

浙公网安备 33010602011771号