排序算法——?dú)w并排序

歸并排序是分治算法的一種荔仁,它的思想比較多個(gè)小的有序集合育特,然后合并成一些集合,然后再兩兩合并合并成一些大的集合疫萤,最終合并成一個(gè)集合趁矾,這個(gè)大集合就是最終的結(jié)果了。

歸并排序分為兩大類(lèi)给僵,分為自底向上的歸并排序,和自頂向下的兩大類(lèi)详拙,自頂向下的算法一般我們用遞歸算法來(lái)實(shí)現(xiàn)帝际,自底向上的算法我們一般通過(guò),where循環(huán)來(lái)實(shí)現(xiàn)饶辙。
歸并排序的時(shí)間復(fù)雜度是O(n*logn)蹲诀,當(dāng)然歸并算法也有很多可以優(yōu)化的地方,例如我們已經(jīng)有序的兩個(gè)數(shù)組弃揽,并且可以直接連接起來(lái)的話脯爪,就不需要merage了,還有就是當(dāng)歸并排序后期矿微,我們的數(shù)組已經(jīng)可以稱為局部有序了痕慢,我們可以在后期調(diào)用插入排序,這樣雖然不能在時(shí)間復(fù)雜度級(jí)別上優(yōu)化我們的算法涌矢,但是也可以優(yōu)化很多的掖举。

自頂向下的算法:

/**
 * Created by linSir on 17/2/9.
 */
function merge(data, left, center, right) {
    var tmpArr = new Array();
    var mid = center + 1;
    var third = left;
    var tmp = left;
    while (left <= center && mid <= right) {
        if (data[left] <= data[mid]) {
            tmpArr[third++] = data[left++];
        } else {
            tmpArr[third++] = data[mid++];
        }
    }
    while (mid <= right) {
        tmpArr[third++] = data[mid++];
    }
    while (left <= center) {
        tmpArr[third++] = data[left++];
    }
    while (tmp <= right) {
        data[tmp] = tmpArr[tmp++];
    }
    console.log(data);
    console.log(tmpArr);
    return data;
}

function sort(data, left, right) {
    if (left >= right)
        return;
    var center = parseInt((left + right) / 2);
    sort(data, left, center);
    sort(data, center + 1, right);
    merge(data, left, center, right);
}
var data = [1, 1000, 4, 40, 2, 5, 100, 88];
sort(data, 0, data.length - 1);

結(jié)果:

Paste_Image.png
//TODO
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市娜庇,隨后出現(xiàn)的幾起案子塔次,更是在濱河造成了極大的恐慌,老刑警劉巖名秀,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件励负,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡匕得,警方通過(guò)查閱死者的電腦和手機(jī)继榆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)耗跛,“玉大人裕照,你說(shuō)我怎么就攤上這事〉魉” “怎么了晋南?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)羔砾。 經(jīng)常有香客問(wèn)我负间,道長(zhǎng)偶妖,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任政溃,我火速辦了婚禮趾访,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘董虱。我一直安慰自己扼鞋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布愤诱。 她就那樣靜靜地躺著云头,像睡著了一般。 火紅的嫁衣襯著肌膚如雪淫半。 梳的紋絲不亂的頭發(fā)上溃槐,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音科吭,去河邊找鬼昏滴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛对人,可吹牛的內(nèi)容都是我干的谣殊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼牺弄,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蟹倾!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起猖闪,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鲜棠,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后培慌,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體豁陆,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年吵护,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盒音。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡馅而,死狀恐怖祥诽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瓮恭,我是刑警寧澤雄坪,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站屯蹦,受9級(jí)特大地震影響维哈,放射性物質(zhì)發(fā)生泄漏绳姨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一阔挠、第九天 我趴在偏房一處隱蔽的房頂上張望飘庄。 院中可真熱鬧,春花似錦购撼、人聲如沸跪削。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)切揭。三九已至,卻和暖如春锁摔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背哼审。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工谐腰, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涩盾。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓十气,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親春霍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子砸西,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 總結(jié) 歸并排序主要用了分治的思想,通過(guò)將數(shù)組分成較小的段址儒,對(duì)小段進(jìn)行排序然后將小段合并起來(lái)芹枷,從而完成排序。歸并排序...
    Hurtck閱讀 207評(píng)論 0 0
  • 原理 歸并排序的基礎(chǔ)是合并有序數(shù)組莲趣,運(yùn)用了分治的思想鸳慈,將數(shù)組對(duì)半分,遞歸喧伞,直到兩個(gè)數(shù)組長(zhǎng)度都為1走芋,可以看作兩個(gè)有序...
    令狐蛋撻閱讀 198評(píng)論 0 0
  • 一般來(lái)說(shuō)溉仑,這三者的時(shí)間復(fù)雜度O(NlogN)挖函,空間復(fù)雜度O(n)優(yōu)化后,空間復(fù)雜度均可為O(1)浊竟,如下文中的快排和...
    Albert_Sun閱讀 715評(píng)論 0 1
  • 歸并排序(Merging Sort)利用歸并的思想實(shí)現(xiàn)的排序方法挪圾。它的原理是假設(shè)初始序列含有n個(gè)記錄浅萧,則可以看成是...
    GB_speak閱讀 349評(píng)論 0 0
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 將一個(gè)記錄插入到已排序好...
    依依玖玥閱讀 1,253評(píng)論 0 2