歸併排序(板子?)

2021-10-24 08:55:15 字數 1222 閱讀 2510

給定你乙個長度為n的整數數列。

請你使用歸併排序對這個數列按照從小到大進行排序。

並將排好序的數列按順序輸出。

輸入格式

輸入共兩行,第一行包含整數 n。

第二行包含 n 個整數(所有整數均在1~109範圍內),表示整個數列。

輸出格式

輸出共一行,包含 n 個整數,表示排好序的數列。

資料範圍

1≤n≤100000

輸入樣例:

53 1 2 4 5

輸出樣例:

1 2 3 4 5

#include

using

namespace std;

const

int n=

1e6+10;

int a[n]

,tmp[n]

;void

merge_sort

(int q,

int l,

int r)

while

(i<=mid) tmp[k++

]=q[i++];

while

(j<=r) tmp[k++

]=q[j++];

for(

int i=l,j=

0;i<=r;i++

,j++

) q[i]

=tmp[j];}

intmain()

merge_sort

(a,0

,n-1);

for(

int i=

0;i)return0;

}

#include

using

namespace std;

#define fir(i,a,b) for(int i=a;i<=b;i++)

const

int n=

1000100

;int a[n]

,b[n]

,n;void

merge

(int a,

int l,

int r)

intmain()

merge

(a,1

,n);

for(

int i=

1;i<=n;i++

) cout

}

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