社区讨论
O(nlogn)都过不了吗???为什么最后一个测试数据超时???
P1923【深基9.例4】求第 k 小的数参与者 8已保存回复 10
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 10 条
- 当前快照
- 1 份
- 快照标识符
- @lo90umj4
- 此快照首次捕获于
- 2023/10/28 03:44 2 年前
- 此快照最后确认于
- 2023/10/28 03:44 2 年前
CPP
#include<iostream>
using namespace std;
void QuickSort(int a[],int k,int start,int end){
//cout<<"start="<<start<<" end="<<end<<endl;
if(start>=end){
return;
}
else{
int base=a[(start+end)/2];
int x=start,y=end;
while(x<y){
while(a[y]>base&&y>=x){
y--;
}
while(a[x]<base&&y>=x){
x++;
}
if(y>=x){
swap(a[x],a[y]);
y--,x++;
}
}
if(a[x]<base){x++;}
//cout<<"base="<<base<<" a["<<k<<"]="<<a[k]<<endl;
if(k==x){
return;
}
else if(k<x){
QuickSort(a,k,start,x-1);
}else{
QuickSort(a,k,x,end);
}
}
}
int main()
{
int n,k;
cin>>n>>k;//求n个数字中第k小的数
int a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
QuickSort(a,k,0,n-1);
cout<<a[k]<<endl;
return 0;
}
回复
共 10 条回复,欢迎继续交流。
正在加载回复...