編程珠璣開篇2–磁碟檔案排序問題再討論

來源:互聯網
上載者:User

在編程珠璣開篇--磁碟檔案排序問題一文中,要求輸入時某個正整數不會重複出現。 如果每個整數重複出現的次數至多10次,我們應該如何修改方案呢?

如果每個整數最多出現10次,那麼我們就可以使用半個位元組4位,統計出現的次數。

相應的設定函數也應該修改:

 

#define BITSPEREORD 8 // the type int contains 8 bit num#define SHIFT  3 // pow(2,3)#define MASK 0X07 //00000111#define NUMBER 10000000int bitBuffer[ 1 + NUMBER / BITSPEREORD ] ;void clr( int i ) //set every bit 0 {    bitBuffer [ i >> SHIFT ] &= ~ (0X0F<< 4* (i & MASK) ) ;  
}//i & MASK 相當於 i mod 32
void set ( int i ) //set the n bits 1  {      bitBuffer [ i >> SHIFT ] +=  ( 1 <<  4*(i & MASK) ) ;}int test( int i ) //read the sort number from bitBuffer {  return bitBuffer [ i >> SHIFT ] & ( 0X0F << 4*( i & MASK )) ;}

 

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.