基礎排序演算法 歸併排序

2021-10-01 08:22:30 字數 696 閱讀 2968

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

#include

using

namespace std;

int a[

100]

;int b[

100]

;void

merge

(int a,

int s1,

int e1,

int s2,

int e2,

int b)

while

(s1<=e1)

b[k++

]=a[s1++];

while

(s2<=e2)

b[k++

]=a[s2++];

k--;while

(k>=i)

}void

mergesort

(int a,

int x,

int y,

int b)

}int

main()

基礎排序演算法 歸併排序

把陣列從中間劃分成兩個子陣列,一直遞迴的把子陣列劃分成更小的子陣列,直到子陣列裡面只有乙個元素。依次按照遞迴的返回順序,不斷地合併排好序的子陣列,直到最後把整個陣列的順序排好。public class mergesort sort nums,0,nums.length 1 system.out.pr...

演算法基礎 歸併排序

1.演算法描述 把原始的陣列分成若干的子陣列,對每乙個子陣列進行排序 繼續把子陣列與子陣列合併,合併後仍然有序,直到全部合併完成,形成有序的陣列。2.演算法實現 2.1.合併子陣列 param unsorted the unsorted array param first the start ind...

演算法基礎 歸併排序

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