WA#3#4#5 求助!
查看原帖
WA#3#4#5 求助!
1396740
BYER_FIGHTING楼主2024/8/23 14:36

可以问一下这段代码有什么问题吗?感谢

#include<bits/stdc++.h>
using namespace std;
long long k;
int findk(long long begin,long long end,long long*a){
	int i=begin,j=end;
	int temp=begin;
	while(i<j){
		while(i<j&&a[j]>a[temp]) j--;
		while(i<j&&a[i]<=a[temp])i++;
		if(i<j){
			swap(a[i],a[j]);
			i++;
			j--; 
		}
	}	
	swap(a[i],a[temp]);
	if(k==i)
		return a[i];
	else if(k<i)
		return findk(begin,i-1,a);
	else 
		return findk(i+1,end,a);
}
int main(){
	long long n;
	cin>>n>>k;
	long long *a=new long long[n];
	for(int i=0;i<n;i++)
		scanf("%lld",&a[i]);
	cout<<findk(0,n-1,a);
	return 0;
}
2024/8/23 14:36
加载中...