歸併排序演算法實現

2021-10-02 09:58:07 字數 742 閱讀 4285

const

int maxn =

100;

//將陣列a的[l1, r1]與[l2, r2]區間合併為有序區間(此處l2即為r1 + 1)

void

merge

(int a,

int l1,

int r1,

int l2,

int r2)

while

(i <= r1) temp[index++

]= a[i++];

//將[l1, r1]剩餘元素加入temp

while

(j <= r2) temp[index++

]= a[j++];

for(i =

0; i < index; i++

) a[l1 + i]

= temp[i]

;//將合併後的序列賦值回陣列a

}//將array陣列當前區間[left, right]進行歸併排序

void

mergesort

(int a,

int left,

int right)

}

void

mergesort

(int a)

}}

注:當僅需給出每趟歸併結果時,merge函式可由sort函式替代(若時間允許)。

[1]. 《演算法筆記》p140-141

歸併排序演算法實現

關於歸併排序演算法的思想,網上有很多介紹,這裡不再解釋,這裡提供了乙個j a類,讀者可以把類潛入到自己的程式中,直接呼叫,免去了重新編寫歸併排序的過程。具體的j a 如下 1 import j a.util.2class mergesort 2021 public static void merge...

排序演算法 歸併排序演算法的實現

1 時間複雜度 最優情況 o n 最壞情況 o nlogn 將待排序的序列分成若干子串行,並且每個子串行是有序的,再將每個子串行兩兩進行排序,合併,最終整體有序。2 演算法步驟 1 先將序列拆分成兩個子串行 2 將兩個子串行之間進行排序,合成乙個 3 重複 1 2 過程,進行遞迴,直至每個序列個數為...

歸併演算法 歸併排序

歸併演算法 歸併排序 這周需要用到歸併演算法,於是找了找相關的資料,整理如下 歸併排序 merge sort 是利用 歸併 技術來進行排序。歸併是指將若干個已排序的子檔案合併成乙個有序的檔案。兩路歸併演算法 1 演算法基本思路 設兩個有序的子檔案 相當於輸入堆 放在同一向量中相鄰的位置上 r low...