C6-3 数组第K小数

来源:互联网 发布:matlab2013a软件激活 编辑:程序博客网 时间:2024/05/29 21:16

C6-3 数组第K小数

 
(100/100 分数)
题目描述

给定一个整数数组a[0,...,n-1],求数组中第k小数


输入描述

首先输入数组长度n和k,其中1<=n<=5000, 1<=k<=n

然后输出n个整形元素,每个数的范围[1, 5000]


输出描述

该数组中第k小数


样例输入

4 21 2 3 4

样例输出
2

注释 

#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;} 
快排了一下,应该有效率更高的算法

0 0
原创粉丝点击