資料結構之歸併排序

2021-08-14 08:43:27 字數 919 閱讀 8604

介紹

歸併排序是建立在歸併操作上的一種有效的排序演算法,效率為o(nlogn)。

歸併排序的實現分為遞迴實現與非遞迴(迭代)實現。遞迴實現的歸併排序是演算法設計中分治策略的典型應用,我們將乙個大問題分割成小問題分別解決,然後用所有小問題的答案來解決整個大問題。非遞迴(迭代)實現的歸併排序首先進行是兩兩歸併,然後四四歸併,然後是八八歸併,一直下去直到歸併了整個陣列。實現

1、申請空間,使其大小為兩個已經排序序列之和,該空間用來存放合併後的序列。

2、設定兩個指標,最初位置分別為兩個已經排序序列的起始位置。

3、比較兩個指標所指向的元素,選擇相對小的元素放入到合併空間,並移動指標到下一位置。

4、重複步驟3直到某一指標到達序列尾。

5、將另一串行剩下的所有元素直接複製到合併序列尾。

簡單例子

public

class

demo5

while (i != mid + 1)

tmp[k++] = a[i++];

while (j != end + 1)

tmp[k++] = a[j++];

for (i = start; i <= end; i++)

a[i] = tmp[i];

for (int p : a)

system.out.print(p + " ");

system.out.println();

}static

void

mergesort(int a, int start, int end)

}public

static

void

main(string args) ;

mergesort(b, 0, b.length - 1);

}}

資料結構之歸併排序

編寫乙個歸併排序程式,並在main函式中驗證結果 歸併排序 merging sort 是利用 歸併 技術進行排序,所謂歸併 是指將若干個已排序好的子表合併成乙個有序表 最簡單的歸併是將兩個有序的子表合併成乙個有序表。假設r low 到r mid 和r mid 1 到r high 是儲存在同乙個陣列中...

資料結構之歸併排序

話說天下大勢,分久必合,合久必分.那就讓我一統江山,將其合併吧 哇咔咔咔,廢話不多說了,歸併排序的 來啦.歸併畢竟相較之前的排序都會更複雜些,所以加了備註.寫注釋也是能獲得碼市好好公民獎的吧 public class merge 以起始下標和最大下標為準求出中間數,採用遞迴方式將陣列不斷分成左右兩邊...

資料結構之排序 歸併排序

四 歸併排序 歸併 把若干個有序的數列,合成乙個有序的數列 如二路歸併 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,二路歸併排序 迭代法 把待...