永发信息网

新手求教,编程作业 求数组第k小数

答案:1  悬赏:70  手机版
解决时间 2021-02-05 00:42
  • 提问者网友:黑米和小志
  • 2021-02-04 04:39
新手求教,编程作业 求数组第k小数
最佳答案
  • 五星知识达人网友:慢性怪人
  • 2021-02-04 06:11
#include <iostream>
#include <vector>
using namespace std;

void swap(int &a,int &b){
int temp;
temp=a;
a=b;
b=temp;
}

int Partition(vector<int> &array,int low,int high){
int pivot=array[low];
while(low<high){
while(low<high&&array[low]<=array[high]) high--;
swap(array[low],array[high]);
while(low<high&&array[low]<=array[high]) low++;
swap(array[high],array[low]);
}
array[high]=pivot;
return high;
}

void QuickSort(vector<int> &array,int low,int high){
if(low<high){
int pivot=Partition(array,low,high);
QuickSort(array,low,pivot-1);
QuickSort(array,pivot+1,high);
}
return;
}

int main(){
int n,k;
cin>>n;
if(n<0||n>5000) return false;
cin>>k;
if(k<0||k>n) return false;
vector<int>array(n);
for(int i=0;i<n;i++){
cin>>array[i];
if(array[i]<-5000||array[i]>5000) return false;
}
QuickSort(array,0,n-1);
cout<<array[k-1]<<endl;
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯