關於雜湊表

來源:互聯網
上載者:User

        若結構中存在關鍵字和K相等的記錄,則必定在f(K)的儲存位置上。由此,不許比較便可直接取得所查記錄。稱這個對應關係f為散列函數(Hash Function),按這個思想建立的表稱為散列表。

       對不同的關鍵字可能得到同一散列地址,即key1!=key2,而H(key1)==H(key2),這種現象稱為衝突。具有相同函數值的關鍵字對該散列函數來說稱作同義字。

       綜上所述:根據散列函數f(key)和處理衝突的方法將一組關鍵字映像到一個有序的連續地址集上,並以關鍵字所在地址集上的‘象’作為記錄在表中中儲存位置。這種表稱為散列表,這一映像過程稱為散列。所得的儲存位置稱為散列地址。

      對於關鍵字集合中的任一個關鍵字,經散列函數映像到地址集合上任一個地址的機率是相等的,則稱此類散列函數為均勻散列函數。這就是使關鍵字經過散列函數得到一個隨機的地址,從而減少衝突。

     散列函數能使對一個資料序列的訪問過程更加迅速有效,通過散列函數,資料元素將被更快的定位。

1)直接定址法:取關鍵字或關鍵字的某個線性函數值為散列地址。即H(key)=key或者H(key)=a*key+b,a和b為常數

2)數字分析法

3)平方取中法:計算關索引值,再取中間R位形成一個R*R位的表

4)摺疊法:把所有字元的ASCII碼加起來(對於字串)

5)隨機數法

6)除留餘數法:取關鍵字被某個不大於散列表表長m的數p除後所得的餘數為散列地址。即H(key)=key MOD p,  (p<m)。不僅可以對關鍵字直接模數,也可在摺疊、平方取中等運算之後再模數。對p的選擇很重要,一般取素數或m,若p選得不好,容易產生同義字。

 

--------------------------------------------------從第一次筆試就考到散列表,但是到現在還沒有弄明白-----------------------------

------------------------------------------------- 又過了一星期,還是不想看-----------------------------------------------------------------

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.