随机生成10万个整数,在不对10万整数排序的情况下,如何获得最大的前100个数、如何获得最大的前100个合数,
数过多,不能用遍历数组来动吧,太麻烦了,有什么比较好的方法吗
我有一个想法,就是维护一个长度为100的有序数组。每次插入都用二分查找来找位置。这样的话应该能优化一下。然后合数也类似 。不过这就是时间换空间了。
排序也不慢,主要还是cout的效率太低
#include<iostream>
#include<ctime>
#include<cstdlib>
#include<algorithm>
using namespace std;
#define N 100000
int a[N];
int main(){
for(int i=0;i<N;i++){
a[i]=rand()%N+1;
}
sort(a,a+N,greater<int>());
// for(int i=0;i<N;i++){
// cout<<a[i]<<" ";
// }
return 0;
}