溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

位圖排序示例

發(fā)布時(shí)間:2020-07-17 19:14:08 來(lái)源:網(wǎng)絡(luò) 閱讀:311 作者:fy永恒之鑰 欄目:開(kāi)發(fā)技術(shù)

位圖排序示例第0行

第1行(32-63),依次類推。

C++代碼如下:

/** @file          Bitmap

 *  @copyright     personal

*  @brief         接口頭文件

 *  @version       v1.0.0

 *  @author        fangyuan

 *  @date          2015/10/20

 *  @note          測(cè)試版本

 */

#include "iostream"

#include <math.h>

#include "vector"

#define INT_BYTES sizeof(int)                                    //int型所占字節(jié)

#define INT_BITS (8*INT_BYTES)                                   //int型所占位數(shù)

#define MAXNUM (1024*1024*1024)                                  //最大數(shù)

#define SHIFT_BIT (int)(log(double(INT_BITS))/log(double(2)))    //最大移位數(shù),左移一位等價(jià)于*2,即最大^SHIFT_BIT

#define MASK (INT_BITS-1)                                       //根據(jù)int類型變化,一般為31

using namespace std;

 

 

//int bitmap[MAXNUM/INT_BITS];        //超出數(shù)組范圍定義

vector<int> bitmap(MAXNUM/INT_BITS);  //自動(dòng)初始化為,若非C++,可自定為list;

 

void set(int i)

{

//i>>SHIFT_BIT等價(jià)于i/INT_BITS,i & MASK等價(jià)于i%MASK,取余的分母一般為^n-1

    bitmap[i>>SHIFT_BIT] |= 1<<(i & MASK);  //當(dāng)前位,置為1,再進(jìn)行或運(yùn)算

}

//獲取第i行,第j列

bool get(int i,int j)

{

    //return (bitmap[i>>SHIFT_BIT] & 1<<(i & MASK));

    return (bitmap[i] & 1<<(j & MASK));

}

int main()

{

    set(2);

    set(3);

    set(50000000);

    set(100);

    set(50);

    //不按數(shù)字遍歷,按行遍歷,減少遍歷次數(shù)

    for(int i = 0; i < bitmap.size(); ++i)

    {

        if( !bitmap[i] ) 

       {

           continue;

       }

       for(int j = 0; j <= MASK;++j)

       {

           bool result = get(i,j);

           if(result)

           {

              cout << i*INT_BITS+j << endl;

           }  

       }

    }

    system("pause");

    return 0;

}

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI