请问怎么解决运行超时呢
查看原帖
请问怎么解决运行超时呢
1569766
bennini_217楼主2024/12/27 09:43
//快速排序找第k小
#include<bits/stdc++.h>
using namespace std;

int partition(vector<int>& p,int l,int r){
	int i=l;
	int j=r-1;
	int t=p[r];
	while(1){
		while(p[i]<t){
			i++;
		}
		while(p[j]>t&&j>l){
			j--;
		}
		if(i>=j){
			break;
		}
		swap(p[i],p[j]);
		i++;
		j--;
	}
	swap(p[i],p[r]);
	return i;
}

int find(vector<int>& p,int l,int r,int k){
	int h=partition(p,l,r);
	if(h==k){
		return p[k];
	}
	else if(h<k){
		find(p,h+1,r,k);
	}
	else{
		find(p,l,h-1,k);
	}
} 

int main(){
	int n,k;
	cin>>n>>k;
	vector<int> p(n);
	for(int i=0;i<n;i++){
		cin>>p[i];
	}
	int f=find(p,0,n-1,k);
	cout<< f;
} 
2024/12/27 09:43
加载中...