亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

海量數據處理系列之:用C++實現Bitmap算法

2020-01-26 16:04:22
字體:
來源:轉載
供稿:網友
bitmap是一個十分有用的結構。所謂的Bit-map就是用一個bit位來標記某個元素對應的Value, 而Key即是該元素。由于采用了Bit為單位來存儲數據,因此在存儲空間方面,可以大大節省。
適用范圍:可進行數據的快速查找,判重,刪除,一般來說數據范圍是int的10倍以下
基本原理及要點:使用bit數組來表示某些元素是否存在,比如8位電話號碼
擴展:bloom filter可以看做是對bit-map的擴展
問題實例:
1)已知某個文件內包含一些電話號碼,每個號碼為8位數字,統計不同號碼的個數。
8位最多99 999 999,大概需要99m個bit,大概10幾m字節的內存即可。
2)2.5億個整數中找出不重復的整數的個數,內存空間不足以容納這2.5億個整數。
將bit-map擴展一下,用2bit表示一個數即可,0表示未出現,1表示出現一次,2表示出現2次及以上?;蛘呶覀儾挥?bit來進行表示,我們用兩個bit-map即可模擬實現這個2bit-map。
下面是一個簡單的Bitmap的實現:
復制代碼 代碼如下:

#include "stdafx.h"
#include <iostream>
using namespace std;
char *g_bitmap = NULL; 
int g_size = 0; 
int g_base = 0;
//功能:初始化bitmap
//參數: size:bitmap的大小,即bit位的個數
//      start:起始值
//返回值:0表示失敗,1表示成功
int bitmap_init(int size, int start) 

 g_size = size/8+1;
 g_base = start;
 g_bitmap = new char[g_size]; 
 if(g_bitmap == NULL)
 {
  return 0; 
 }
 memset(g_bitmap, 0x0, g_size); 
 return 1; 

//功能:將值index的對應位設為1
//index:要設的值
//返回值:0表示失敗,1表示成功
int bitmap_set(int index) 

     int quo = (index-g_base)/8 ;  //確定所在的字節
     int remainder = (index-g_base)%8;  //字節內的偏移 
     unsigned char x = (0x1<<remainder);   
     if( quo > g_size) 
          return 0;
     g_bitmap[quo] |= x;   //所在字節內的特定位置為1 
     return 1;  


//功能:取bitmap第i位的值
//i:待取位
//返回值:-1表示失敗,否則返回對應位的值
int bitmap_get(int i) 

 int quo = (i)/8 ; 
 int remainder = (i)%8; 
 unsigned char x = (0x1<<remainder); 
 unsigned char res; 
 if( quo > g_size) 
  return -1; 
 res = g_bitmap[quo] & x; 
 return res > 0 ? 1 : 0;  


 //功能:返回index位對應的值  
int bitmap_data(int index) 

 return (index + g_base); 

//釋放內存
int bitmap_free() 

 delete [] g_bitmap;
 return 0;
}   

int _tmain(int argc, _TCHAR* argv[])

 int a[] = {5,8,7,6,3,1,10,78,56,34,23,12,43,54,65,76,87,98,89,100}; 
    int i; 
 bitmap_init(100, 0); 
 for(i=0; i<20; i++)
 {
  bitmap_set(a[i]); 
 }
 for(i=0; i<=100; i++) 
 { 
  if(bitmap_get(i) > 0 ) 
   cout << bitmap_data(i)<< " ";
 } 
 cout << endl; 
 bitmap_free();
    return 0; 


【問題實例】
1)
已知某個文件內包含一些電話號碼,每個號碼為8位數字,統計不同號碼的個數。
8位最多99 999 999,大概需要99m個bit,大概10幾m字節的內存即可。 (可以理解為從0-99 999 999的數字,每個數字對應一個Bit位,所以只需要99M個Bit==1.2MBytes,這樣,就用了小小的1.2M左右的內存表示了所有的8位數的電話)
2)2.5億個整數中找出不重復的整數的個數,內存空間不足以容納這2.5億個整數。
將bit-map擴展一下,用2bit表示一個數即可,0表示未出現,1表示出現一次,2表示出現2次及以上,在遍歷這些數的時候,如果對應位置的值是0,則將其置為1;如果是1,將其置為2;如果是2,則保持不變?;蛘呶覀儾挥?bit來進行表示,我們用兩個bit-map即可模擬實現這個 2bit-map,都是一樣的道理。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久天堂电影网| 午夜精品免费视频| 久久久噜噜噜久久| 欧美成人激情视频免费观看| 欧美极品少妇xxxxⅹ免费视频| 国产精品狼人色视频一区| 亚洲最大的av网站| 日韩电影免费在线观看中文字幕| 国产精品96久久久久久又黄又硬| 亚洲二区在线播放视频| 国产成人av网| 欧美激情精品久久久久久变态| 久久91亚洲精品中文字幕| 亚洲黄色成人网| 中文字幕欧美专区| 成人信息集中地欧美| 成人精品视频久久久久| 久久综合九色九九| 成人444kkkk在线观看| 欧美在线视频观看免费网站| 国产精品∨欧美精品v日韩精品| 亚洲欧美另类中文字幕| 国产欧美在线播放| 亚洲sss综合天堂久久| 亚洲最大av网站| 视频在线观看一区二区| 欧美日韩国内自拍| 欧美韩国理论所午夜片917电影| 欧美激情在线视频二区| 欧美最猛黑人xxxx黑人猛叫黄| 最近2019中文免费高清视频观看www99| 亚洲老板91色精品久久| 在线电影av不卡网址| 亚洲第一国产精品| 日韩精品日韩在线观看| 日韩二区三区在线| 亚洲精品成a人在线观看| 青青草原一区二区| 欧美老少配视频| 国产亚洲美女久久| 欧美第一淫aaasss性| 在线观看国产精品日韩av| 久久影院中文字幕| 69视频在线播放| 精品色蜜蜜精品视频在线观看| 一区国产精品视频| 992tv在线成人免费观看| 国模精品一区二区三区色天香| 欧美极品少妇xxxxⅹ喷水| 久操成人在线视频| 91九色单男在线观看| 欧美激情中文网| 亚洲一区二区精品| 亚洲国产天堂久久国产91| 亚洲人成电影在线观看天堂色| 97福利一区二区| 欧美成人免费全部观看天天性色| 欧美成人免费va影院高清| 欧美麻豆久久久久久中文| 国产精品视频精品视频| 国产精品一区二区三区毛片淫片| 久久6免费高清热精品| 国产精品福利小视频| 亚洲精品美女在线观看播放| 精品福利免费观看| 国内精品一区二区三区四区| 欧美—级a级欧美特级ar全黄| 欧美激情网站在线观看| 国产成人综合一区二区三区| 成人高清视频观看www| 久久久日本电影| 欧美国产日韩xxxxx| 国产一区二区黄| 亚洲男人天堂2019| 久久久免费精品视频| 国产精品青草久久久久福利99| 久久精品99无色码中文字幕| 久久综合伊人77777尤物| 按摩亚洲人久久| 日韩女优在线播放| 亚洲字幕在线观看| 91av免费观看91av精品在线| 欧美日韩国产专区| 欧美精品午夜视频| 欧美黑人极品猛少妇色xxxxx| 国产精品免费福利| 日韩大片免费观看视频播放| 欧美激情一区二区三区高清视频| 日韩成人av在线播放| 日韩av观看网址| 欧美日韩一区二区三区| 精品久久久久久中文字幕| 欧美日韩精品二区| 国内精品久久久久久| 成人午夜激情网| 亚洲精品国精品久久99热一| 北条麻妃99精品青青久久| 欧美激情极品视频| 国产欧美日韩中文字幕| 美女少妇精品视频| 亚洲综合日韩中文字幕v在线| 日韩精品免费视频| 欧美激情精品久久久久久久变态| 青青青国产精品一区二区| 日韩欧美在线播放| 免费av在线一区| 51ⅴ精品国产91久久久久久| 6080yy精品一区二区三区| 欧美性生交xxxxx久久久| 欧美日韩一区二区免费视频| 亚洲free性xxxx护士hd| 国产99在线|中文| 亚洲人成欧美中文字幕| 色系列之999| 亚洲欧美在线看| 精品日本美女福利在线观看| 亚洲va欧美va国产综合久久| 日韩在线中文字幕| 欧美亚洲一级片| 国产精品一区二区三区在线播放| 欧美精品久久久久a| 91精品久久久久久久久久另类| 7m精品福利视频导航| 日韩成人久久久| 亚洲人成在线观看网站高清| 中日韩美女免费视频网址在线观看| 亚洲色图狂野欧美| 久久精品小视频| 91av在线精品| 欧美精品久久久久久久久| 久久免费精品日本久久中文字幕| 国产成人福利视频| 亚洲国产欧美日韩精品| 成人观看高清在线观看免费| 亚洲精品一区二区在线| 色吧影院999| 热久久免费国产视频| 精品一区二区电影| 久久综合五月天| 一本大道亚洲视频| 欧美在线激情网| 97精品国产91久久久久久| 久久久999精品| 欧美一级视频免费在线观看| 亚洲精品aⅴ中文字幕乱码| 国产日韩欧美在线播放| 久久精品国产欧美亚洲人人爽| 欧美男插女视频| 日韩av在线网站| 国产精品美女av| 欧美午夜www高清视频| 日韩精品中文字幕在线| 亚洲成人国产精品| 国产精品成人一区二区| 国产午夜精品一区理论片飘花| 全色精品综合影院| 亚洲免费成人av电影| 韩日精品中文字幕| 美日韩丰满少妇在线观看| 欧美日韩国产麻豆| 日韩专区在线播放| 成人观看高清在线观看免费| 91亚洲午夜在线| 91在线免费网站|