首页 > 试题广场 >

n 个数,找出其中最小的k个数,写出代码,要求最坏情况下的时

[问答题]
n 个数,找出其中最小的k个数,写出代码,要求最坏情况下的时间复杂度不能高于O(nlogk)
不知道有没有重复的数,假设存在重复的,用multiset实现,set内部已经排序好,并且是用红黑树实现,其时间复杂度不超过对数复杂度:
#include <set>
#include <iostream>

int main(){
multiset<int>  ms;
int temp;
while(cin>>temp){
ms.insert(temp);
}
cin>>k;
for(int i=0,j=ms.begin();i<k;i++,j++){
cout<<*j<<' ';
}
cout<<endl;
}
编辑于 2017-01-31 10:40:00 回复(0)