歸併排序 鄉巴老都能看懂

2021-08-13 23:01:10 字數 806 閱讀 3436

歸併排序(merge-sort)是利用歸併

的思想實現的排序方法,該演算法採用經典的分治

(divide-and-conquer)策略(分治法將問題分(divide)成一些小的問題然後遞迴求解,而治(conquer)

的階段則將分的階段得到的各答案"修補"在一起,即分而治之)。

分而治之

首先我們要知道如何分解?

1.將一串長度為8個元素的陣列分成   兩個部分   兩個部分在分成四個部分   四個部分分成八個部分  

方法:

//分解

if(left >= right)

return;

mid = (left + right +1) /2 ;//把大的序列從中間劃分為兩個小序列

//mid指向右邊的第乙個元素

//對左邊的遞迴進行分解、

mergersort(arr,left,mid-1,tmp);

//對右邊的遞迴進行分解

mergersort(arr,mid,right,tmp);

如何合併?

//合併 

void merger (int arr, int left, int mid,int right , int tmp)

int main()

printarray(arr,n);

mergersort(arr,0,n-1,tmp);

printarray(arr, n);

return 0;

}

歸併排序(2 路歸併排序)

遞迴寫法 include define maxn 100 void merge int a,int l1,int r1,int l2,int r2 將陣列a的區間 l1,r1 和區間 l2,r2 合併為乙個有序區間 else while i r1 while j r2 for int i 0 i非遞...

python歸併排序 python 歸併排序

排序思路 1.將陣列分成兩組a,b,建立臨時陣列 c,c長度 a b 2.i,j分別屬於a,b 3.若a i b j 將b j 放入c,j 否則 a i 放入c,i 4.迴圈3步驟,將a或b中剩餘的元素放入c,再將c複製到陣列中 5.遞迴3 4直到a,b序列的長度 1 歸併排序 class merg...

排序 歸併排序

歸併 merge 排序法是將兩個 或兩個以上 有序表合併成乙個新的有序表,即把待排序序列分為若干個子串行,每個子串行是有序的。然後再把有序子串行合併為整體有序序列。歸併 將兩個已經排好序的集合合併到乙個集合眾,並且保證新的集合也是有序的。核心點 只有乙個元素的集合是已經排好序的集合。歸併排序是建立在...