第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

歸并排序精講——分治算法的初步應(yīng)用

標(biāo)簽:
算法

归并排序,是一种使用分治策略的算法,主要分为两种,一种是自顶向下,一种是自底向上。这两种排序一般都是使用递归方法实现。对于初级程序员来说,虽然递归这个过程理解起来有些难度,但只要过程能够梳理清楚,一般情况下归并排序还是很容易理解的。

归并排序是一种O(nlogn)级别的归并排序,效率比不上快速排序,但对于一般用于对总体无序,但是各子项相对有序的序列,还是有一定用途的。

自顶向下

对于自顶向下的归并排序,主要过程是先将一个待排序的序列进行等半划分,然后再使用递归策略,对刚刚划分出的待排序的子序列进行等半划分,直到划分到底(每个子序列只有一个元素),这就是分的过程。详细图示如下:

webp

归并排序-自顶向下-分

然后,在从底部开始,向上对两个子序列进行归并,得到一个有序的子序列,直到归并到顶,这就是治的过程。详细图示如下:

webp

归并排序-自顶向下-治

治的过程中,每两个待归并的数组,需要将每个元素进行比较,合并成一个有序的数组,这个归并过程如下图所示:

webp

归并排序-归并过程

在归并的过程中,有一个重要的操作需要你注意,就是要重新申请一段空间,用于存放已经排好序的数组。这样就导致归并排序的空间复杂度不是太好。但现在计算机的内存空间可以说是非常廉价,所以当前这已经不算是一个太大的劣势。

自底向上

对于自底向上的归并排序,基本思路和自顶向下是没有什么区别的,最大的区别就是:分和治是同步进行的,每分一步,就把分出来的序列治理好。而且分的过程就是从最小的单元开始分,直到分治出整个待排序的序列。整个排序的示意图如下:

webp

归并排序--自底向上

总结

以上就是两种归并排序的详细过程,还有一个重点需要说明的情况就是:归并排序是一种稳定排序,不管待排序序列是几乎有序的数组,还是有很多重复的元素,对归并排序的时间复杂度几乎都没有什么影响。而之前我们讲的快速排序,则完全是另一种情况,感兴趣的读者可以看看我之前写的文章。



作者:航哥很帅
链接:https://www.jianshu.com/p/636642121c97


點擊查看更多內(nèi)容
1人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機(jī)會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消