bitmap 位儲存實現海量資料的標記

2021-10-09 08:12:11 字數 986 閱讀 7391

針對海量的資料,一般的記憶體無法儲存,提供一種位儲存的標記方法?

如給定10億個數字,詢問其中任意乙個數字是否出現,採取傳統的儲存方式,以32位機器為例

乙個int占用32位,也就是4位元組  

而bitmap的思想是,無符號int型別的範圍是確定的 即0~2的32次方-1

那麼將乙個int拆分開來看,其包含32個bit  若其中乙個bit為1那麼標記原先的數字存在  那麼對於一組int

第乙個int: 表示0~31這32個數字

第二個int: 表示32~63這32個數字

對於任意乙個整數key

key/32可以定位到所在的int (那麼這裡乙個int相當於乙個bucket桶)

key%32可以定位到具體在該int的哪一位

具體實現採取位操作:

set(key)標記乙個key數字存在  將對應bit設定為1    注意採取按位或  避免其他位置的bit唄修改

void set(int key)  //設定key數字為true     找到對應所在的bit下標

reset(key)刪除乙個key  將對於bit設定為0

void reset(int key)  //刪除key數字

exits判斷某個數是否存在

bool exist(int key)

完整bitmap類的實現:

class bitmap

void set(int key) //設定key數字為true 找到對應所在的bit下標

void reset(int key) //刪除key數字

bool exist(int key)

};

海量資料儲存 bit map思想

什麼是bit map 所謂的bit map就是用乙個bit位來標記某個元素對應的value,而key即是該元素。由於採用了bit為單位來儲存資料,因此在儲存空間方面,可以大大節省。如果說了這麼多還沒明白什麼是bit map,那麼我們來看乙個具體的例子,假設我們要對0 7內的5個元素 4,7,2,5,...

bitmap處理海量資料

什麼是bit map 所謂的bit map就是用乙個bit位來標記某個元素對應的value,而key即是該元素。由於採用了bit為單位來儲存資料,因此在儲存空間方面,可以大大節省。如果說了這麼多還沒明白什麼是bit map,那麼我們來看乙個具體的例子,假設我們要對0 7內的5個元素 4,7,2,5,...

bit map海量資料處理

海量資料排序問題 檔案包含1千萬條 號碼記錄 10 7次方 每條記錄都是7位整數,沒有重複的整數。要求對檔案進行排序,注意大約只有1mb的記憶體空間可用,有充足的磁碟儲存空間可用。請設計乙個高效的演算法。1 運用多趟演算法 如果每個號碼都使用32位整數來表示,則在1mb儲存空間裡大約可以存25000...