归并排序模板
为面试准备
背下来就行
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
const int N = 1000010;
int num[N],tmp[N];
void GB_sort(int num[], int l, int r) {
if (l >= r)return;
int mid = l + r >> 1;
GB_sort(num, l, mid);
GB_sort(num, mid + 1, r);
int k = 0, i = l, j = mid + 1;
while (i <= mid && j <= r)
if (num[i] <= num[j]) tmp[k++] = num[i++];
else tmp[k++] = num[j++];
while (i <= mid) tmp[k++] = num[i++];
while (j <= r)tmp[k++] = num[j++];
for (i = l, j = 0; i <= r; i++, j++)
num[i] = tmp[j];
}
int main() {
int x;
scanf("%d", &x);
for (int i = 0; i < x; i++)
scanf("%d", &num[i]);
GB_sort(num, 0, x - 1);
for (int i = 0; i < x; i++)
printf("%d ", num[i]);
return 0;
}
输入样例:
5
3 1 2 4 5
输出样例:
1 2 3 4 5