社区讨论
为什么我的代码只有C++14(GCC 9)过不了?
P1177【模板】排序参与者 3已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @mhjhdsd6
- 此快照首次捕获于
- 2025/11/04 02:36 4 个月前
- 此快照最后确认于
- 2025/11/04 02:36 4 个月前
CPP
#include <bits/stdc++.h>
using namespace std;
int n , a[100001] , tmp[100001];
void merge (int l , int mid , int r) {
//a[l,mid]和a[l+mid,r]排序,然后放到a[l,r]。
int i = l , j = mid + 1 , p = l;
while (i <= mid && j <= r) {
if (a[i] <= a[j]) {
tmp[p] = a[i];
p++;
i++;
} else {
tmp[p] = a[j];
p++;
j++;
}
}
while (i <= mid) {
tmp[p] = a[i];
p++;
i++;
}
while (j <= r) {
tmp[p] = a[j];
p++;
j++;
}
for (int i = 1 ; i <= r ; i++) {
a[i] = tmp[i];
}
}
void merge_sort (int l , int r) {
//要对a数组的[l,r]区间进行排序。
if (l == r) {
return;
}
int mid = (l + r) / 2;
//对[l,mid]排序。
merge_sort(l , mid);
//对[mid+1,r]排序。
merge_sort(mid + 1 , r);
merge(l , mid , r);
}
int main() {
cin >> n;
for (int i = 1 ; i <= n ; i++) {
cin >> a[i];
}
merge_sort(1 , n);
for (int i = 1 ; i <= n ; i++) {
cout << a[i] << " ";
}
return 0;
}
评测记录
回复
共 4 条回复,欢迎继续交流。
正在加载回复...