演算法 bitmap演算法

2022-07-29 23:03:28 字數 718 閱讀 6800

在所有具有效能優化的資料結構中,我想大家使用最多的就是hash表,是的,在具有定位查詢上具有o(1)的常量時間。但hash table需要使用巨大的記憶體空間,顯然在處理大資料時會顯得力不從心。

bitmap可以有效地節省記憶體的使用,它的思想其實就是用1bit來代替乙個index(通常是乙個unsigned int)。

比如我要對這四個byte型別的數字做排序,該怎麼做呢?我們知道byte是佔8個bit位,其實我們可以將陣列中的值作為bit位的key,value用」0,1「來標識該key是否出現過?下面看圖:

從圖中我們精彩的看到,我們的陣列值都已經作為byte中的key了,最後我只要遍歷對應的bit位是否為1就可以了,那麼自然就成有序陣列了。 

可能有人說,我增加乙個13怎麼辦?很簡單,乙個位元組可以存放8個數,那我只要兩個byte就可以解決問題了。

(摘自:

利用位操作,不難寫出bitmap的置位、復位、判斷、取反等操作。

置位:1左移i位與其相或

復位:1左移i位求反後與其相與

取反:1左移i位與其異或

因此,使用幾個位元組的bitmap作為hash table可以節省大量記憶體。

演算法 bitmap演算法

所謂bitmap就是用乙個bit位來標記某個元素對應的value,而key即是這個元素。由於採用bit為單位來儲存資料,因此在可以大大的節省儲存空間 32位機器上,乙個整形,比如int a 在記憶體中佔32bit,可以用對應的32個bit位來表示十進位制的0 31個數,bitmap演算法利用這種思想...

bitmap演算法簡介

今天看到海量資料處理演算法 bitmap 又稱為bitset,或者bit array 有意思的演算法。c 有乙個標頭檔案是。bitmap的思想就是資料壓縮。用乙個二進位制bit 0或者1 去標記某個元素對應的value,這就是bit map啊。由於使用bit單位儲存資料,所以可大大節省記憶體空間。下...

BitMap演算法詳解

所謂的bitmap就是用乙個bit位來標記某個元素所對應的value,而key即是該元素,由於bitmap使用了bit位來儲存資料,因此可以大大節省儲存空間。基本思想 這此我用乙個簡單的例子來詳細介紹bitmap演算法的原理。假設我們要對0 7內的5個元素 4,7,2,5,3 進行排序 這裡假設元素...