题目描述
输入n, 然后输入n个数
排序
样例
输入
5
3 1 2 4 5
输出
1 2 3 4 5
算法1
(归并排序) $O(n^2)$
时间复杂度
参考文献
C++ 代码
#include <cstdio>
const int N = 1e6+10;
int q[N], tmp[N];
void merge_sort(int q[], int l, int r) {
if (l >= r) return ;
int mid = l+r >> 1;
merge_sort (q, l, mid);
merge_sort (q, mid+1, r);
int k = 0, i = l, j = mid+1;
while (i<=mid && j<=r) {
if (q[i] <= q[j]) tmp[k++]=q[i++];
else tmp[k++]=q[j++];
}
while (i<=mid) tmp[k++] = q[i++];
while (j<=r) tmp[k++] = q[j++];
for (i = l , j = 0; i<=r; i++, j++) q[i] = tmp[j];
}
int main() {
int n;
scanf("%d", &n);
for (int i=0; i<n; i++) {
scanf ("%d", &q[i]);
}
merge_sort(q, 0, n-1);
for (int i=0; i<n; i++){
printf("%d", q[i]);
if (i<n-1) printf(" ");
}
return 0;
}