快排40分,测试点345TLE,求指正
查看原帖
快排40分,测试点345TLE,求指正
1171661
yasuoid楼主2023/12/6 17:08
using namespace std;

void qsort(int* n, int i, int j) {
	if (i >= j)return;
	int left = i, right = j;
	while (left < right) {
		while (n[left] <= n[i] && left < right)left++;
		while (n[right] >= n[i] && left < right)right--;
		swap(n[left], n[right]);
	}
	if (n[i] > n[left]) {
		swap(n[i], n[left]);
		qsort(n, i, left - 1);
		qsort(n, left + 1, j);
	}
	else {
		swap(n[i], n[left - 1]);
		qsort(n, i, left - 2);
		qsort(n, left, j);
	}
	return;
}

int main() {
	int N, n[100002];
	cin >> N;
	for (int i = 0; i < N; i++) {
		cin >> n[i];
	}
	qsort(n, 0, N - 1);
	for (int i = 0; i < N; i++)cout << n[i] << " ";
	return 0;
}
2023/12/6 17:08
加载中...