最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實現的bitmap位圖代碼分享

 更新時間:2014年08月28日 10:09:32   投稿:junjie  
這篇文章主要介紹了C語言實現的bitmap位圖代碼分享,位圖(bitmap)是一種非常常用的結構,在索引、數據壓縮等方面有廣泛應用,需要的朋友可以參考下

事實上,我們是用每一個 元素表示一個32位的二進制字符串,這樣這個元素可以保留相鄰32個號碼是否存在的信息,數組范圍就下降到10000000/32了.例如對于號碼 89256,由于89256 mod 32=2789…8,這樣我們應該置a[2789]中32位字符串的第8位(從低位數起)為1.

#define WORD 32
#define SHIFT 5 ////移動5個位,左移則相當于乘以32,右移相當于除以32取整
#define MASK 0x1F //16進制下的31
#define N 10000000
int bitmap[1 + N / WORD];
/*
 * 置位函數——用"|"操作符,i&MASK相當于mod操作
 * m mod n 運算,當n = 2的X次冪的時候,m mod n = m&(n-1)
 */
void set(int i) {
 bitmap[i >> SHIFT] |= (1 << (i & MASK));
}
/* 清除位操作,用&~操作符 */
void clear(int i) {
 bitmap[i >> SHIFT] &= ~(1 << (i & MASK));
}
/* 測試位操作用&操作符 */
int test(int i) {
 return bitmap[i >> SHIFT] & (1 << (i & MASK));
}

實現排序(不能重復):

int main(void) {
 FILE *in = fopen("in.txt", "r");
 FILE *out = fopen("out.txt", "w");
 if (in == NULL || out == NULL) {
 exit(-1);
 }
 int i = 0;
 int m;
 for (i = 0; i < N; i++) {
 clear(i);
 }
 while (!feof(in)) {
 fscanf(in, "%d", &m);
 printf("%d/n", m);
 set(m);
 }
 printf("abnother");
 for (i = 0; i < N; i++) {
 if (test(i)) {
  printf("%d/n", i);
  fprintf(out, "%d/n", i);
 }
 }
 fclose(in);
 fclose(out);
 return EXIT_SUCCESS;
}

相關文章

  • C語言數據結構之堆、堆排序的分析及實現

    C語言數據結構之堆、堆排序的分析及實現

    堆是一個近似完全二叉樹的結構,并同時滿足堆積的性質,下面這篇文章主要給大家介紹了關于C語言數據結構之堆、堆排序的分析及實現的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • C++ Boost Atomic詳細講解

    C++ Boost Atomic詳細講解

    Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱
    2022-11-11
  • 在C++中實現aligned_malloc的方法

    在C++中實現aligned_malloc的方法

    這篇文章主要介紹了在C++中實現aligned_malloc的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • QT+OpenGL實現簡單圖形的繪制

    QT+OpenGL實現簡單圖形的繪制

    這篇文章主要為大家詳細介紹了如何利用QT和OpenGL實現簡單圖形的繪制,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下
    2022-12-12
  • C語言圖文并茂講解分支語句用法

    C語言圖文并茂講解分支語句用法

    分支結構的執(zhí)行是依據一定的條件選擇執(zhí)行路徑,而不是嚴格按照語句出現的物理順序。分支結構的程序設計方法的關鍵在于構造合適的分支條件和分析程序流程,根據不同的程序流程選擇適當的分支語句
    2022-04-04
  • c++回調之利用函數指針示例

    c++回調之利用函數指針示例

    這篇文章主要介紹了c++利用函數指針示例,需要的朋友可以參考下
    2014-04-04
  • 淺談C語言共用體和與結構體的區(qū)別

    淺談C語言共用體和與結構體的區(qū)別

    下面小編就為大家?guī)硪黄獪\談C語言共用體和與結構體的區(qū)別。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • C++函數pyrUp和pyrDown來實現圖像金字塔功能

    C++函數pyrUp和pyrDown來實現圖像金字塔功能

    這篇文章主要介紹了C++函數pyrUp和pyrDown來實現圖像金字塔功能,如何使用OpenCV函數 pyrUp 和 pyrDown 對圖像進行向上和向下采樣,需要的朋友可以參考下
    2017-03-03
  • C++實現MyString的示例代碼

    C++實現MyString的示例代碼

    本文主要介紹了C++實現MyString的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C語言編程數據在內存中的存儲詳解

    C語言編程數據在內存中的存儲詳解

    本篇文章是C語言編程篇,主要為大家介紹C語言編程中數據在內存中存儲解析,有需要的朋友可以借鑒參考下,希望可以有所幫助
    2021-09-09

最新評論

夹江县| 当阳市| 南江县| 阿巴嘎旗| 武安市| 临洮县| 邹平县| 科尔| 平罗县| 成安县| 七台河市| 云梦县| 阿鲁科尔沁旗| 饶河县| 沁阳市| 台中市| 望奎县| 扎鲁特旗| 桃园县| 西丰县| 临汾市| 榆社县| 隆安县| 微博| 舒兰市| 孙吴县| 安徽省| 梅河口市| 西盟| 普兰县| 南雄市| 天柱县| 定南县| 台中县| 乌鲁木齐市| 鄱阳县| 林周县| 泗水县| 瑞丽市| 松滋市| 辉南县|