堆排序,前一个其实写错了
来源:互联网 发布:鼎峰网络兼职平台 编辑:程序博客网 时间:2024/05/12 07:04
前几天写了一个堆排序,发现其实有个错误。
我写了如下一个代码:
发现AdjustHeap其实没有整理成大根堆,而是类似于冒泡法把最大一个节点放到了头上。
但是堆调整是不充分的。
所以我想到要使用堆排序的话,必须要建立一个树结构,Initialheap的时候是对整个树结构做调整。
这只要做一次。而交换过一次后就可以只对头元素找一个合适他的位子就好了。因为其他的元素已经是堆了。
所以貌似很难利用Array中未排的元素作为二叉树,因为随着Array长度减少,叶子节点会有漂移。
就不能保证 “除了头元素以外别的元素仍然是树这个前提”。
或者就是每次对前面未排的array当做二叉树做全体initialHeap,如下:
但这样感觉是不合算的:
- 堆排序,前一个其实写错了
- 随便写了个堆排序程序
- java写一个堆排序(大顶堆)
- 其实我写文章了
- 写了一个测试体质的工具,其实也可以用于算命。
- 【动手写排序】堆排序
- 一步一步写算法--堆排序
- 最近自己用C++写了一个排序类
- 自己写的堆排序。第一次写
- Java堆排序,取得前TopN个数
- 无聊写排序之 ---- 堆排序(HeadSort)
- 学了个堆排序
- 上传了前阵子写的一个Symbian 3rd下的即时通信软件源代码!
- 上传了前阵子写的一个Symbian 3rd下的即时通信软件源代码!
- 前两天写了一个ini文件解析类,感觉还不错,和大家分享一下:)
- 写一个SHELL排序
- 写一个快速排序
- 写了一个俄罗斯
- automake 的使用
- UML 进阶
- 在Solaris网络部署HIDS配置实战
- 合成聚合复用原则(CARP)
- java中的manifest文件格式
- 堆排序,前一个其实写错了
- .bin安装文件制作
- C++调用c函数
- c调用C++函数
- Timer类
- G1->I7500->G2,手机原来可以这么有趣
- 一个加密和机密(有错误)
- 异常
- .net图片验证码代码Img