Coding: 一亿个数找最大的1000个数
生活随笔
收集整理的這篇文章主要介紹了
Coding: 一亿个数找最大的1000个数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
描述
一億個數找最大的1000個數,要求效率高占用內存少。函數原型為:find_max_data(int* source_data, int* max_data),其中source_data是存放一億個數的數組,max_data用于存放其中最大的1000個數。
思路
使用multiset的自動排序功能(默認從小到大排列),每次插入比最小數更大的值。
代碼
// 從1億個數中找到最大的1000個數 void find_max_data(int *source_data, int length, int k) {int count = 0;multiset<int> set;multiset<int>::iterator it;for(int i = 0; i < length; i++){if(count < k){set.insert(source_data[i]);}else{it = set.begin();if(*it < source_data[i]){set.erase(it);set.insert(source_data[i]);}}count++;}it = set.begin();// 打印for (; it != set.end(); it++){cout<<*it<<endl;} }總結
以上是生活随笔為你收集整理的Coding: 一亿个数找最大的1000个数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Coding:取若干个1到n的整数可求和
- 下一篇: Coding:两个从大到小的有序链表合并