演算法基礎 歸併排序

2021-06-19 13:16:04 字數 862 閱讀 4653

1. 演算法描述

把原始的陣列分成若干的子陣列,對每乙個子陣列進行排序;繼續把子陣列與子陣列合併,合併後仍然有序,直到全部合併完成,形成有序的陣列。

2. 演算法實現

2.1. 合併子陣列

/**

* @param unsorted the unsorted array

* @param first the start index for the 1st sub array

* @param mind the end index for the 1st sub array

* @param last the end index for the 2nd sub array

* @param sorted the temp array

*/void merge(int unsorted, int first, int mid, int last, int sorted)

else

}while (i <= mind)

while (j <= last)

for (int t = 0; t < k; t++)

}

2.2. 遞迴子陣列

void mergesort(int a, int first, int last, int temp)

}void test()

演算法基礎 歸併排序

歸併排序即將目標陣列分成n個最小的組 相鄰的2個數字 並將這些最小子陣列排序,依次合併相鄰的子陣列,最後各自有序的子陣列將會合併成完全有序的陣列。這將需要用到遞迴思想。static class mergesort private static void merge int a,int start,i...

基礎演算法 歸併排序

def merge arr 這個函式是先把陣列進行分割,一直分,最後分成乙個數來呼叫第二個函式mergesort進行比較 如果陣列只有乙個數,直接就返回 if len arr 1 return arr mid len arr 2 left arr merge arr mid right arr me...

基礎排序演算法 歸併排序

歸併排序 merge sort 是建立在歸併操作上的一種有效的排序演算法,該演算法是採用分治法 divide and conquer 的乙個非常典型的應用。將已有序的子串行合併,得到完全有序的序列 即先使每個子串行有序,再使子串行段間有序。若將兩個有序表合併成乙個有序表,稱為二路歸併。歸併排序是一種...