「話說天下大勢,分久必合,合久必分.」.那就讓我一統江山,將其合併吧~~哇咔咔咔,廢話不多說了,歸併排序的**來啦.歸併畢竟相較之前的排序都會更複雜些,所以加了備註.寫注釋也是能獲得碼市好好公民獎的吧~^^
public
class
merge
//以起始下標和最大下標為準求出中間數,採用遞迴方式將陣列不斷分成左右兩邊排序,再合併
private
static
void
sort
(comparable[
] a,
int left,
int right)
int middle = left +
(right - left)/2
;sort
(a, left, middle)
;sort
(a, middle+
1, right)
;merge
(a, left, middle, right);}
//合併過程
private
static
void
merge
(comparable[
] a,
int left,
int middle,
int right)
//遍歷,如果左邊還有元素沒有賦給臨時陣列,就把把剩下的元素按順序賦給臨時陣列對應索引的位置
while
(leftp <= middle)
//遍歷,如果右邊還有元素沒有賦給臨時陣列,就把把剩下的元素按順序賦給臨時陣列對應索引的位置
while
(rightp <= right)
//將排好序的臨時陣列的元素再賦給原陣列
for(
int i=left; i <= right; i++)}
//比較哪個元素更小
private
static
boolean
less
(comparable v, comparable w)
}
我寫的夠詳細吧,嘻嘻,若還是有不明白的地方,請自由提問,能夠成為你的乙份力量也是我奮鬥的目標喔!!! 資料結構之歸併排序
介紹 歸併排序是建立在歸併操作上的一種有效的排序演算法,效率為o nlogn 歸併排序的實現分為遞迴實現與非遞迴 迭代 實現。遞迴實現的歸併排序是演算法設計中分治策略的典型應用,我們將乙個大問題分割成小問題分別解決,然後用所有小問題的答案來解決整個大問題。非遞迴 迭代 實現的歸併排序首先進行是兩兩歸...
資料結構之歸併排序
編寫乙個歸併排序程式,並在main函式中驗證結果 歸併排序 merging sort 是利用 歸併 技術進行排序,所謂歸併 是指將若干個已排序好的子表合併成乙個有序表 最簡單的歸併是將兩個有序的子表合併成乙個有序表。假設r low 到r mid 和r mid 1 到r high 是儲存在同乙個陣列中...
資料結構之排序 歸併排序
四 歸併排序 歸併 把若干個有序的數列,合成乙個有序的數列 如二路歸併 void merge int d1,int len1,int d2,int len2,int tmp while i len1 tmp k d1 i while j len2 tmp k d2 j 1,二路歸併排序 迭代法 把待...