天天看點

大資料處理時的一種BitMap小算法

一種大資料外部排序(記憶體無法加載所有排序元素)、去除重複元素、快速找到随機被删除元素的BitMap小算法,核心思想即通過将一個數作為下标(index)來索引一個bit表示一個數是否存在,排序時的時間複雜度為O(N),需要的額外空間的複雜度O(N/8),支援整個int範圍(正負數都支援)的算法示例如下:

僅支援unsigned int範圍的算法示例如下:

上面的算法都是用一個bit來表示一個數,即隻有2種可能,要麼有,要麼無,可以擴充到一個位元組表示一個數,這樣就可以統計出現255次範圍内的重複元素,原理以此類推。

另外用bit來表示一個int數,節約了31倍的記憶體空間,即int(4*8),bit(8/1),是以資料量越來使用這種方式的優勢越明顯,前提是場景适用這種方式。

繼續閱讀