求助!!!样例为过!!!
查看原帖
求助!!!样例为过!!!
1065168
wanghetian楼主2023/10/24 21:23
#include <bits/stdc++.h>
using namespace std;
int a[600005], b[600005], ans;

void merge (int l, int r ) {
	if (l == r) {
		return ;
	}
	int mid = l + r / 2;
	int i = 1, j = mid + 1, tot = 1;
	while (i <= mid &&  j <= r) {
		if (a[i] <= a[j]) {
			b[tot++] = a[i];
			i++;
		} else {
			b[tot++] = a[j];
			j++;
		}
	}
	while (i <= mid) {
		b[tot++] = a[i];
		i++;
	}
	while (j <= r) {
		b[tot++] = a[j];
		j++;
	}
	for (int i = 1; i <= r; i++) {
		a[i] = b[i];
	}
	return ;
}

void mergesort(int l, int r) {
	if (l < r) {
		int mid = (l + r) / 2;
		mergesort(l, mid);
		mergesort(mid + 1, r);
		merge(l, r);
	}
}

int main() {
	int n;
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> a[i];
	}
	mergesort(1, n);
	for (int i = 1; i <= n; i++) {
		cout << a[i] << " ";
	}
	return 0;
}
2023/10/24 21:23
加载中...