#include "stdafx.h"
#include
#include
#include
#include // for greater<>
using namespace std;
int _tmain(int argc, _tchar* argv)
cout << bigs.size() << endl;
make_heap(bigs.begin(),bigs.end(), greater()); // the first one is the smallest one!
float ff;
for (int i = 0; i < 1000000000; i++)
}// sort by ascent
sort_heap(bigs.begin(), bigs.end(), greater());
// sort by descent
//sort_heap(bigs.begin(), bigs.end());
//sort_heap(bigs.begin(), bigs.end(), less());
return 0;
}
10億浮點數求最大的一萬個
這兩天在網上淘到一道筆試題目 注1 雖然真假未知,但的確是道好題,題目如下 從10億個浮點數中找出最大的1萬個。這是一道似易實難的題目,一般同學最容易中的陷阱就是沒有重視這個 億 字。因為有10億個單精度浮點數元素的陣列在32位平台上已經達到3.7gb之巨,在常見計算機平台 如win32 上宣告乙個...
有10億個浮點數,找出一萬個最大的數
給乙個基於最小二叉堆的方案 第一階段,向最小二叉堆中插入前一萬個浮點數 第二階段,從第一萬零乙個浮點數開始,將之與最小二叉堆頂部的最小值比較。如果小於這個最小值,把最小值彈出並將新值插入到二叉堆中。重複此過程直到遍歷完成。建立長度一萬的二叉樹。2.遍歷剩餘的浮點數,若大於最小值則插入二叉樹並刪除最小...
有10億個浮點數,從中找出1萬個最大的數。
給乙個基於最小二叉堆的方案 第一階段,向最小二叉堆中插入前一萬個浮點數 第二階段,從第一萬零乙個浮點數開始,將之與最小二叉堆頂部的最小值比較。如果小於這個最小值,把最小值彈出並將新值插入到二叉堆中。重複此過程直到遍歷完成。建立長度一萬的二叉樹。2.遍歷剩餘的浮點數,若大於最小值則插入二叉樹並刪除最小...