• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            A Za, A Za, Fighting...

            堅信:勤能補拙

            [zz] 若干字符串哈希函數

             //  RS Hash Function 
             unsigned  int  RSHash( char   * str)
             {
                    unsigned  
            int  b  =   378551 ;
                    unsigned  
            int  a  =   63689 ;
                    unsigned  
            int  hash  =   0 ;

                     
            while  ( * str)
                     {
                            hash  
            =  hash  *  a  +  ( * str ++ );
                            a  
            *=  b;
                    } 
             
                     
            return  (hash  &   0x7FFFFFFF );

             
             
            //  JS Hash Function 
             unsigned  int  JSHash( char   * str)
             {
                    unsigned  
            int  hash  =   1315423911 ;

                     
            while  ( * str)
                     {
                            hash  
            ^=  ((hash  <<   5 )  +  ( * str ++ )  +  (hash  >>   2 ));
                    } 
             
                     
            return  (hash  &   0x7FFFFFFF );

             
             
            //  P. J. Weinberger Hash Function 
             unsigned  int  PJWHash( char   * str)
             {
                    unsigned  
            int  BitsInUnignedInt  =  (unsigned  int )( sizeof (unsigned  int )  * 8 );
                    unsigned  
            int  ThreeQuarters     =  (unsigned  int )((BitsInUnignedInt   *   3 )  /  4 );
                    unsigned  
            int  OneEighth         =  (unsigned  int )(BitsInUnignedInt  /   8 );
                    unsigned  
            int  HighBits          =  (unsigned  int )( 0xFFFFFFFF )  <<  (BitsInUnignedInt  -  OneEighth);
                    unsigned  
            int  hash              =   0 ;
                    unsigned  
            int  test              =   0 ;

                     
            while  ( * str)
                     {
                            hash  
            =  (hash  <<  OneEighth)  +  ( * str ++ );
                             
            if  ((test  =  hash  &  HighBits)  !=   0 )
                             {
                                    hash  
            =  ((hash  ^  (test  >>  ThreeQuarters))  &  ( ~ HighBits));
                            } 
                    } 
             
                     
            return  (hash  &   0x7FFFFFFF );

             
             
            //  ELF Hash Function 
             unsigned  int  ELFHash( char   * str)
             {
                    unsigned  
            int  hash  =   0 ;
                    unsigned  
            int  x     =   0 ;

                     
            while  ( * str)
                     {
                             hash  
            =  (hash  <<   4 )  +  ( * str ++ );
                             
            if  ((x  =  hash  &   0xF0000000L )  !=   0 )
                                    hash  
            ^=  (x  >>   24 );
                             hash  
            &=   ~ x;
                    } 
             
                     
            return  (hash  &   0x7FFFFFFF );

             
             
            //  BKDR Hash Function 
             unsigned  int  BKDRHash( char   * str)
             {
                    unsigned  
            int  seed  =   131 ;  //  31 131 1313 13131 131313 etc.. 
                     unsigned  int  hash  =   0 ;

                     
            while  ( * str)
                     {
                            hash  
            =  hash  *  seed  +  ( * str ++ );
                    } 
             
                     
            return  (hash  &   0x7FFFFFFF );

             
             
            //  SDBM Hash Function 
             unsigned  int  SDBMHash( char   * str)
             {
                    unsigned  
            int  hash  =   0 ;

                     
            while  ( * str)
                     {
                            hash  
            =  ( * str ++ )  +  (hash  <<   6 )  +  (hash  <<   16 )  -  hash;
                    } 
             
                     
            return  (hash  &   0x7FFFFFFF );

             
             
            //  DJB Hash Function 
             unsigned  int  DJBHash( char   * str)
             {
                    unsigned  
            int  hash  =   5381 ;

                     
            while  ( * str)
                     {
                            hash  
            +=  (hash  <<   5 )  +  ( * str ++ );
                    } 
             
                     
            return  (hash  &   0x7FFFFFFF );

             
             
            //  AP Hash Function 
             unsigned  int  APHash( char   * str)
             {
                    unsigned  
            int  hash  =   0 ;
                     
            int  i;

                     
            for  (i = 0 ;  * str; i ++ )
                     {
                             
            if  ((i  &   1 )  ==   0 )
                             {
                                    hash  
            ^=  ((hash  <<   7 )  ^  ( * str ++ )  ^  (hash  >>   3 ));
                            } 
                             
            else 
                              {
                                    hash  
            ^=  ( ~ ((hash  <<   11 )  ^  ( * str ++ )  ^  (hash  >>   5 )));
                            } 
                    } 
             
                     
            return  (hash  &   0x7FFFFFFF );

            posted on 2010-07-28 13:19 simplyzhao 閱讀(106) 評論(0)  編輯 收藏 引用 所屬分類: G_其他

            導航

            <2010年8月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            2930311234

            統計

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            中文字幕精品久久| 无码久久精品国产亚洲Av影片| 久久综合噜噜激激的五月天| 欧美黑人激情性久久| 久久国产乱子精品免费女| 国产999精品久久久久久| 中文精品久久久久人妻| 国产精品禁18久久久夂久| 国产福利电影一区二区三区久久老子无码午夜伦不 | 久久精品国产亚洲av瑜伽| 香蕉久久夜色精品国产2020 | 久久精品国产91久久综合麻豆自制 | 亚洲国产精品无码久久久久久曰| 亚洲精品成人久久久| 久久久中文字幕| 97精品依人久久久大香线蕉97| 国产精品成人99久久久久 | 亚洲va久久久噜噜噜久久狠狠| 久久精品国产只有精品2020| 精品久久久久久国产| 久久精品无码一区二区三区日韩| 久久99国产精品尤物| 久久无码AV一区二区三区| 精品99久久aaa一级毛片| 精品免费tv久久久久久久| 狠狠色婷婷久久综合频道日韩| 久久久久无码国产精品不卡| 亚洲国产精品久久久久网站 | 久久性精品| 国产三级观看久久| 91精品国产色综久久| 亚洲精品美女久久777777| 亚洲精品午夜国产va久久| 99久久精品免费国产大片| 久久精品水蜜桃av综合天堂| 无码精品久久久天天影视| 亚洲欧洲中文日韩久久AV乱码| 久久久WWW成人免费毛片| 久久www免费人成精品香蕉| 久久久久亚洲av成人无码电影 | 色综合久久无码中文字幕|