社区讨论

为啥会原封不动的输出——归并排序

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 条回复,欢迎继续交流。

正在加载回复...