堆,有大顶堆跟小顶堆之分,这里就不扯概念了,那个官方讲得很详细嗯也很官方= =,简单理解一下就是一个金字塔,你是帮主,你下面还有左右护法四大天王八大金刚十六罗汉,嗯就这样一直下去,而所谓的大顶堆就是作为帮主的你是住塔顶的,小顶堆呢?则相反,你们帮最小最小的那个小弟就在那 。大概是这样哈:
这个就是所谓的大顶堆,生活中是不是太常见了?(理解为主,请忽略图= =)

文章插图
那它又是怎么做到排序的?

文章插图
还记得选择排序是怎么排序的?就是选择一个最大数不断的插入到最后的对吧?但是选择最大数的那个过程是通过不断的比较,一个个位置挪动去得到的,那能不能跳着走?跳着扫描 。实际上,分成堆只是让我们更好理解 。
一起看看代码是怎么样实现的吧:

文章插图
下面是做的一个简单的性能测试
① 普通插入排序与快速排序的速度对比(数据量20万):

文章插图
可以看到在20万随机数(0-10000)的排序中,快排所花的时间不足100个时间单位,而插入排序要超过50000个 。普通的O(n²)的性能与最好情况O(nlogn)的快排是完全没法比(数据量越庞大结果越明显) 。
② 希尔排序与快速排序对比(数据量2000万):

文章插图
由于这两个排序都是极不稳定的,但是从测试的几次结果看,希尔排序的性能会略微优于快排(语言:JAVAscript)
③归并排序与希尔排序

文章插图
归并排序相对于希尔,快排的不稳定来说,归并排序最好跟最坏的情况均是nlogn,是稳定且快捷的排序算法 。利用的正是完全二叉树的思维模式 。
④堆排序与归并排序

文章插图
也是2000万1-10000的随机数排序 。
【算法入门篇:简单的排序算法】
推荐阅读
- 植物缅甸最终篇_一花一叶总关情
- 区块链核心技术之哈希算法
- GC 一篇文章彻底了解Java垃圾收集机制
- 归并排序「从入门到放弃」
- |钓鱼刚入门时,你是先接触台钓,还是传统钓?
- 新郎父亲婚礼致辞简洁篇
- 一篇感恩母亲的演讲,感动哭了 感恩母亲演讲稿
- IntelliJ IDEA 最常用配置详细图解,新手入门必看
- 10篇教师年终考核总结范文 考核工作总结
- 人力资源的三大支柱是什么?这篇文章告诉你
