排序算法之--归并排序(好玩的一个算法o。o)快速入门
生活随笔
收集整理的這篇文章主要介紹了
排序算法之--归并排序(好玩的一个算法o。o)快速入门
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
排序算法之--歸并排序(好玩的一個算法o。o)
下面是歸并操作的基本思路(注意:是歸并操作哦,不是歸并排序哦)
歸并操作的工作原理如下: 第一步:申請空間,使其大小為兩個已經排序序列之和,該空間用來存放合并后的序列 第二步:設定兩個指針,最初位置分別為兩個已經排序序列的起始位置 第三步:比較兩個指針所指向的元素,選擇相對小的元素放入到合并空間,并移動指針到下一位置 重復步驟3直到某一指針超出序列尾 將另一序列剩下的所有元素直接復制到合并序列尾。大家需要注意的是,進行歸并操作來實現數組排序的前提是:歸并操作兩邊的數組要都是有序的(所以這里又涉及到了遞歸的過程,而單單遞歸好像也沒用哦,有用的遞歸是從小范圍開始遞歸到大范圍,所以這里又涉及到了,中分遞歸)。
了解了這個大題的四路:歸并排序其實也不是很難理解了哦。
直接上個圖,便于理解:
圖片的分解其實就相當于中分遞歸,后面的合并其實就是歸并操作;
先來了解一下歸并操作的編程部分:
先定義兩個指針,一個指向左邊,一個指向中間+1,再定義一個輔助數組help[](說明其空間復雜度為O(N)哦)
來比較一下大小,小的元素放到輔助數組中,并將下標++,直到兩個指針有一個為空,跳出,將另外一部分還沒放到輔助數組的元素拷貝到輔助數組中去。下面供上流程圖:
通俗易懂就是這個:
下面對程序進行分析:
26~30行定義變量和數組
31,32判斷有沒有越界,沒有越界就比較大小,小的放進去,同時輔助數組下標++,比較小的指針也++
37~47則是將將另外一部分還沒放到輔助數組的元素拷貝到輔助數組中去。
到這里那我們就直接上程序了哦。
下面就是所謂的中分遞歸和歸并遞歸了;
總結
以上是生活随笔為你收集整理的排序算法之--归并排序(好玩的一个算法o。o)快速入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一篇博客读懂设计模式之-----策略模式
- 下一篇: 详解HTTP协议~~~