提交记录 17716


用户 题目 状态 得分 用时 内存 语言 代码长度
Saisyc 1001a. 测测你的排序2 Compile Error 0 0 ns 0 KB C++ 789 B
提交时间 评测时间
2022-05-22 21:15:22 2022-05-22 21:15:24
#include <cstdio>
#include <algorithm>

const int N = 1 << 23;
int a[N]; int n;

void inplace_merge_sort(int *a, int n) {
	if(n == 1) return;
	int r = n >> 1;
	inplace_merge_sort(a + r, n - r);
	while (r != 1) {
		int l = r >> 1;
		inplace_merge_sort(a, l);
		int i = 0, j = r, k = r - l;
		while (i != l && j != n) {
			if (a[i] <= a[j]) std::swap(a[i++], a[k++]);
			else              std::swap(a[j++], a[k++]);
		}
		while (i != l) std::swap(a[i++], a[k++]);
		while (j != n) std::swap(a[j++], a[k++]);
		r = r - l;
	}
	for (int i = 0; i + 1 != n && a[i] > a[i + 1]; ++i) std::swap(a[i], a[i + 1]);
	return;
}

int main(void) {
	scanf("%d", &n);
	for (int i = 0; i < n; ++i) scanf("%d", a + i);
	inplace_merge_sort(a, n);
	for (int i = 0; i < n; ++i) printf("%d ", a[i]);
	
	return 0;
}

CompilationN/AN/ACompile ErrorScore: N/A


Judge Duck Online | 评测鸭在线
Server Time: 2026-03-17 02:27:10 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠