关于本题的几个问题,望解答~
查看原帖
关于本题的几个问题,望解答~
675527
Play_CP_4fun楼主2022/4/28 17:44
#include <bits/stdc++.h>
using namespace std;
const int N = 5e6 + 5;
int n, k, q[N];
void quick_sort(int a[], int l, int r) {
	int i = l - 1, j = r + 1, x = a[(l + r) / 2];
	if (l >= r) return;
	while (i <=  j) {
		do i++; while (a[i] < x);
		do j--; while (a[j] > x);
		if (i <= j) swap(a[i], a[j]);
	}
	
//	quick_sort(a, l, j);
//	quick_sort(a, j + 1, r);
//	for (int i = 0; i < n; i++) {
//		cout << a[i] << ' ';
//		if (i == n - 1) cout << "\n";
//	}
	if (k == j) return;
	else if (k < j) quick_sort(a, l, j);
	else if (k > j) quick_sort(a, j + 1, r);
}
int main() {
	std::ios::sync_with_stdio(false);
	std::cin.tie(0);
	cin >> n >> k;
	for (int i = 0; i < n; i++) cin >> q[i];
	quick_sort(q, 0, n - 1);
	cout << q[k]; 
	return 0;
}

不知道为什么MLE和WA了。望大佬解答。 平时写快排代码的这几行

quick_sort(a, l, j);
quick_sort(a, j + 1, r);

不能改成

quick_sort(a, l, i);
quick_sort(a, j, r);

是为什么呢,是和我上面的快排写法有关吗? 提前谢谢大家

2022/4/28 17:44
加载中...