这是一道典型的排序问题
绝大多数人都会想到冒泡排序,插入排序等简单排序
但这里教给大家一种全新的方法
构造数组
代码如下:
#include <iostream>
using namespace std;
int main(){
int num[30000]={0};//构造长度为30000的数组,每个下标代表对应的正整数
int n,k;
cin>>n>>k;
for(int i=0,j;i<n;i++)
cin>>j,num[j]++;
int m=0;bool flag=0;
for(int i=0,j;i<30000;i++){
if(num[i]!=0)m++;
if(m==k)
cout<<i,flag++;//输出符合题意的正整数
if(flag)break;//如果输出过就退出循环
}
if(m!=k)cout<<"NO RESULT";
return 0;
}
运用构造数组,能使时间复杂度从O(nlogn)降到O(n),大大提升运行速度