日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

j - 数据结构实验:哈希表_一看就懂的数据结构基础「哈希表」

發布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 j - 数据结构实验:哈希表_一看就懂的数据结构基础「哈希表」 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

哈希表

哈希表(Hash table),是存儲鍵值(Key Value)對數據的一種數據結構。

例如,我們可以將人的名字作為鍵,性別作為值來存儲。通過把鍵映射到表中的一個位置來訪問數據,以提高查找速度。而這個映射關系就是哈希函數。

哈希函數

因為哈希表的數據映射關系以哈希函數為體現,為了避免小伙伴對哈希函數不夠了解,此處先介紹哈希函數。

哈希函數可以把給定的數據轉換成固定長度的無規律數值,可以把它想象成一臺處理器,如下圖所示:

輸入的數據經過加工后,會輸出對應的“哈希值”。哈希值多用十六進制表示(十六進制數范圍是,數字0~9和字母a~f)。而計算機中則使用0和1表示的二進制來管理這些數據,實際上,哈希函數就是計算機內部進行的某種運算。

哈希函數的五個基本特征:

  • 不管輸入數據大或小,輸出的哈希值數據長度固定不變
  • 如果輸入的數據相同,那么輸出的哈希值也必定相同
  • 輸入相似的數據并不會導致輸出的哈希值也相似
  • 即使輸入的數據完全不同,輸出的哈希值也有可能相同,這種情況叫作“哈希沖突”
  • 哈希函數的輸入、輸出不可逆,即無法反向推算出原數據
  • 哈希表結構

    如果將鍵值對數據存儲在固定大小的數組中,那么當需要查找某個數據時,我們只能從頭開始遍歷,我相信你已經很熟悉了,這就是“線性查找”。數據量越多,線性查找耗費的時間就越長,從耗時來看,此處使用數組來存儲數據并不理想。

    但使用哈希表就可以解決這個問題,首先,仍然使用具有5個存儲空間的數組來存儲數據。現在,嘗試將Sue的鍵值對數據存入數組,使用哈希函數(Hash)計算Sue的哈希值,得到的結果為83491,將哈希值對5取模(mod),求得余數1。因此,我們將Sue數據存儲在數組1號空間中。

    重復前面的操作,Tom鍵的哈希值為84274,mod 5后結果為4,將Tom數據存儲到4號空間中。

    Bat鍵的哈希值為66549,mod 5后余數為4,按照前述操作來看,我們應當將其存入4號空間中,但4號空間已經存儲了Tom的數據,這種存儲位置重復的情況叫作“沖突”。遇到此種情況,可使用鏈表結構在已有的數據后面繼續存儲數據,關于鏈表的內容可見“鏈表”篇。

    繼續存儲Amy數據,Amy鍵的哈希值為65965,mod 5后的余數為0,將其存儲在0號空間中。

    Tan鍵的哈希值為83841,mod 5后的余數為1。本應將其存儲在數組1號空間中,但1號空間已有Sue的數據,故而使用鏈表,在Sue后面繼續存儲Tan的數據。

    Rob數據同上,其哈希值為82341,mod 5后的余數為1,因“沖突”,使用鏈表結構,繼續存儲在Tan數據的后面。

    像這樣存儲完數據,哈希表也就制作完成了。

    查詢哈希表的數據也很簡單,先計算出目標數據鍵的哈希值,然后對其進行mod運算,得到余數即是數組對應的空間索引。如果這個數據正好存儲在數組空間上,那當然是皆大歡喜,如果不在,就需要對單鏈表進行線性查找了。

    說明

    哈希表中,可以通過哈希函數(Hash)快速獲取數組中的目標數據。如果出現“沖突”,可以使用單鏈表在已有數據的后面插入新數據來解決沖突,這個方法被稱為“鏈地址法”。這樣不管數據量是多少,都可以靈活處理。

    當然,除了鏈地址法以外還有其他解決沖突的方法,使用較為廣泛的是“開放地址法”。此方法是指沖突發生時,循環計算下一個后補地址,直到有滿足條件的為止。

    數組空間越小,哈希表沖突的概率就越大,對單鏈表的線性查找頻率就越高。反過來,如果數組空間過大,又會出現很多閑置的存儲空間,因此,設定合適的數組空間非常重要!

    總結

    以上是生活随笔為你收集整理的j - 数据结构实验:哈希表_一看就懂的数据结构基础「哈希表」的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。