求助用的快排只有60分,后面两个超时了
查看原帖
求助用的快排只有60分,后面两个超时了
1267057
aa2211034566楼主2024/1/27 10:58
#include<iostream>
#include<cmath>
using namespace std;
int k;
long long int a[5000010];
void ssort(int l,int r){
	int i=l;
	int j=r;
	long long int mid=a[i];
	while(i<j){
		while(i<j&&a[j]>mid){
			j--;
		}
		if(i<j){
			swap(a[i],a[j]);
			i++;
		}
		while(i<j&&a[i]<mid){
			i++;
		}
		if(i<j){
			swap(a[i],a[j]);
			j--;
		}
	}
	if(i==k){
		printf("%d",a[i]);return ;
	}
	else if(k<i){
		ssort(0,i-1);
	}
	else{
		ssort(i+1,r);
	}
}
int main(){
	int n;
	scanf("%d%d",&n,&k);
	for(int i=0;i<n;i++)
		scanf("%lld",&a[i]);
	ssort(0,n-1);
}
2024/1/27 10:58
加载中...