查詢大數據

如何判斷在40億個無符號整型數據是否存在某個數(不需要排序)?

方案1

申請512M的內存(232/8=512M),一個bit位代表一個unsigned int值。讀入40億個數,設置相應的bit位,讀入要查詢的數,查看相應的bit位是否爲1,爲1表示存在,爲0表示不存在。

方案2

因爲232爲40億多,所以給定一個數可能在,可能不在,這裏把40億個數中的每一個用32位的二進制來表示。

假設這40億個數分成兩類:①最高位爲0 ②最高位爲1
然後將這兩類分別寫入到兩個文件中,其中一個文件的個數<=20億,而另外一個>=20億(相當於折半查找);與要查找的數比較後進入對應的文件再查找

然後把這個文件又分爲兩類:①次高位爲0 ②次高位爲1
。。。。。。

以此類推,就可以找到,時間複雜度爲O(logn)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章