• <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性久久久久蜜臀aⅴ麻豆 | 国产精久久一区二区三区| 国产精品女同久久久久电影院| 99久久精品费精品国产一区二区 | 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 亚洲AV无码久久精品蜜桃| 成人国内精品久久久久一区 | 日本加勒比久久精品| 亚洲AV无码久久| 久久久久九国产精品| 亚洲精品无码久久久久久| 精品久久久久久无码国产| 一本久久a久久精品亚洲| 狠狠色综合网站久久久久久久 | 久久精品国产清自在天天线| 九九精品99久久久香蕉| 日日狠狠久久偷偷色综合免费| 久久久久亚洲av无码专区导航| 精品视频久久久久| 久久天堂AV综合合色蜜桃网 | 久久国产乱子精品免费女| 久久久久久精品无码人妻| 久久久久国产成人精品亚洲午夜| 国产人久久人人人人爽| 精品人妻伦九区久久AAA片69| 久久免费视频网站| 久久国产精品一区二区| 久久亚洲中文字幕精品有坂深雪 | 久久精品国产99久久久| 无码国内精品久久综合88| 国产免费久久久久久无码| 国产精品99久久久久久人| 久久精品国产清高在天天线| 伊人久久大香线蕉AV色婷婷色| 久久笫一福利免费导航 | 日本精品久久久中文字幕| 精品久久久久久无码专区| 麻豆AV一区二区三区久久| 久久99精品久久久久子伦| 少妇精品久久久一区二区三区 |