社区讨论
为啥会原封不动的输出——归并排序
P1271【深基9.例1】选举学生会参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @lzwczmux
- 此快照首次捕获于
- 2024/08/16 14:59 2 年前
- 此快照最后确认于
- 2024/08/16 16:53 2 年前
CPP
#include<bits/stdc++.h>
using namespace std;
int n, m, k;
int a[1010], b[1010];
void xy_sort(int l, int r){
if (l >= r) return;
int zhong = (l+r)/2;
k = l;
xy_sort(l, zhong);
xy_sort(zhong+1, r);
int i = l, j = zhong+1;
while (i <= zhong || j <= r){
if (i <= zhong && j <= r){
if (a[i] <= a[j]){
b[k] = a[i];
i++,k++;
}else{
b[k] = a[j];
j++,k++;
}
}else if (i > zhong && j <= r){
b[k] = a[j];
j++,k++;
}else{
b[k] = a[i];
i++,k++;
}
}
for (int p = l; p <= r; p++) a[p] = b[p];
}
int main(){
cin >> n >> m;
for (int i = 1; i <= m;i++) cin >> a[i];
xy_sort(1,m);
for (int i = 1; i <= m; i++){
cout << a[i] << " ";
}
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...