排序算法(二):遞歸排序之歸并排序

一、什么是遞歸

? ? 遞歸就是函數(shù)調(diào)用本身,和高中數(shù)學(xué)的數(shù)學(xué)歸納法類似。當(dāng)在求一個(gè)數(shù)組的第n項(xiàng)的時(shí)候,有兩種方式,第一種就是根據(jù)各種公式,求通項(xiàng)公式,第二種,就是數(shù)學(xué)歸納法,發(fā)現(xiàn)數(shù)據(jù)項(xiàng)前后兩項(xiàng)的規(guī)律??梢赃@么說,遞歸只要知道開始的特殊情況,知道過程是如何展開的。(遞推:相反使用一個(gè)循環(huán)來實(shí)現(xiàn),但有的時(shí)候遞推有一定難度,不過可以使用棧來實(shí)現(xiàn)消除遞歸,這么說,一些編譯器都是用棧來實(shí)現(xiàn)遞歸的)

二、歸并排序如何實(shí)現(xiàn)

????歸并排序的原理是,合并兩個(gè)有序的數(shù)組。兩個(gè)有序數(shù)的合并相對較為簡單, 通常遍歷一遍就可以合并。因此只要保證兩個(gè)數(shù)組是有序,然后進(jìn)行一次合并,就得到一個(gè)有序數(shù)組。那么,上述的過程已經(jīng)發(fā)現(xiàn)了,假設(shè)要對一個(gè)數(shù)組進(jìn)行排序,那么可以將其一分為二,得到兩個(gè)數(shù)組,那么如何保證這兩個(gè)數(shù)組有序的。這里已經(jīng)很明顯的,問題又回到開頭,也就是遞歸(調(diào)用函數(shù)本身)。遞歸不能只是關(guān)注過程,也要關(guān)注(邊界問題),不然可能會陷入死循環(huán),甚至坐標(biāo)越界?,F(xiàn)在的(邊界)就是,何時(shí),數(shù)組不可再分?很顯然,就是也就是數(shù)組小于二。換而言之,就是數(shù)組大于一是調(diào)用函數(shù)本身。


拼接方法

? ??????

遞歸
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容