1 条题解
-
1
参考答案:
#include<iostream> using namespace std; const int N = 200010; int a[N], tmp[N]; void merge_sort(int a[], int l, int r) { if (l >= r) return; int mid = l + r >> 1; merge_sort(a, l, mid); merge_sort(a, mid + 1, r); int k = 0; int i = l, j = mid + 1; while (i <= mid && j <= r) { if (a[i] < a[j]) tmp[k++] = a[i++]; else tmp[k++] = a[j++]; } while (i <= mid) tmp[k++] = a[i++]; while (j <= r) tmp[k++] = a[j++]; for (int i = l, j = 0; i <= r; ++i, ++j) a[i] = tmp[j]; } int main() { int n; cin >> n; for (int i = 0; i < n; ++i) scanf("%d", &a[i]); merge_sort(a, 0, n - 1); for (int i = 0; i < n; ++i) printf("%d ", a[i]); return 0; }
- 1
信息
- ID
- 78
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 6
- 已通过
- 2
- 上传者