推广 热搜: page  音视频  使用  个数  搜索引擎  选择  企业  父亲  百度  可以 

10大排序算法之六:堆排序【不稳定】,复杂度中,不常用堆排序,堆结构更重要

   日期:2024-12-31     作者:czdytfhm4    caijiyuan   评论:0    移动:http://ww.kub2b.com/mobile/news/16994.html
核心提示:算法界的十大排序算法分别是: 选择排序、冒泡排序、插入排序、堆排序、希尔排序、归并排序、快速排序、桶排序、计数排序&

算法界的十大排序算法分别是
选择排序、冒泡排序、插入排序、堆排序、希尔排序、归并排序、快速排序、桶排序、计数排序,基数排序
(1)选择排序:10大排序算法之一:选择排序【不稳定】,一般不用选择排序的
(2)冒泡排序:10大排序算法之二:冒泡排序【稳定的】,但复杂度高,一般不用冒泡排序的
(3)插入排序:10大排序算法之三:插入排序【稳定的】,复杂度高,系统常在数据少时用插入排序。
(4)归并排序:10大排序算法之四:归并排序【稳定的】,复杂度中,系统常用归并排序
(5)快速排序:10大排序算法之五:快速排序【不稳定】,复杂度中,系统常用快速排序


请你用堆排序算法,将arr排序为升序


示例:arr = 5 3 1 8 6 2 4
让其最终变为:arr= 1 2 3 4 5 6 8


上一篇文章,我花了重功夫,讲了系统的堆结构,如何手动改写堆结构
我把大根堆和小根堆的实现与代码都写好了

,系统堆结构,手动改写堆结构,堆结构远比比堆排序更重要

咱们今天要说的堆排序,重要的根基知识就是堆结构,这个堆结构
重要的事情,说三遍
堆结构远比堆排序重要
堆结构远比堆排序重要
堆结构远比堆排序重要

有了咱们实现的堆结构,那排序一事就很简单了
咱这样做:

最开始,我们认为arr就是小根堆中的缓存,只不过heapSize=0,实际容量还没有呢
(1)索引arr的i=0–N-1每一个位置,利用heapInsert(int[] arr, int i)函数,不断地纳入i位置,将其加入小根堆arr
(2)然后你会发现,小根堆已经成型了!arr自然已经有序了
复杂度每次i加入都会以log(n)复杂度调整,上浮的动作
需要调整N次
所以复杂度为 o(n*log(n
这与归并排序,快速排序的复杂度一样的
但是,因为堆来回调整,整个顺序乱了,同样的数字相对位置已经无法保证,所以堆排序它不稳定,咱们也不常用的。

利用小根堆做堆排序:手撕代码,很简单了

 

复杂度也挺高的,何必呢?所以也不常用
但是堆排序的思想可以理解
重要的是堆结构


本文地址:http://ww.kub2b.com/news/16994.html     企库往 http://ww.kub2b.com/ ,  查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

 
 
更多>同类最新文章
0相关评论

文章列表
相关文章
最新动态
推荐图文
最新文章
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号