• <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 閱讀(101) 評論(0)  編輯 收藏 引用 所屬分類: G_其他

            導航

            <2010年9月>
            2930311234
            567891011
            12131415161718
            19202122232425
            262728293012
            3456789

            統計

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久亚洲AV成人出白浆无码国产| 久久这里只精品99re66| 91精品日韩人妻无码久久不卡 | 久久91这里精品国产2020| 精品国产青草久久久久福利| 久久中文字幕视频、最近更新| 色天使久久综合网天天| 久久丫精品国产亚洲av不卡| 亚洲国产精品久久66| 精品久久久无码21p发布| 成人国内精品久久久久影院VR | 久久精品国产精品亚洲人人| 伊人久久无码中文字幕| 久久乐国产综合亚洲精品| 国产精品久久久久AV福利动漫| 国产精品久久久久久久久软件 | 欧美亚洲国产精品久久蜜芽| 久久天天躁狠狠躁夜夜不卡| 伊人久久五月天| 亚洲国产成人精品91久久久 | 久久福利资源国产精品999| 狠狠人妻久久久久久综合| 久久精品无码一区二区三区| AV无码久久久久不卡蜜桃| 色欲久久久天天天综合网| 午夜欧美精品久久久久久久| 久久亚洲私人国产精品| 91久久香蕉国产熟女线看| 久久久无码精品午夜| 18岁日韩内射颜射午夜久久成人| 国产69精品久久久久9999APGF| 久久婷婷五月综合色高清 | 久久久久久午夜成人影院| 久久久精品一区二区三区| 日韩美女18网站久久精品| 亚洲精品乱码久久久久久久久久久久| 国产午夜久久影院| 亚洲色大成网站www久久九 | 狠狠色噜噜色狠狠狠综合久久| 99热成人精品免费久久| 久久99精品久久久久久久不卡 |