天天看點

C# 通俗說哈希表

1.何謂哈希

   哈希,也程散列。哈希表是一種與數組,連結清單等不同的資料結構,與他們需要不斷的

周遊比較查找的辦法,哈希表設計了一個映射關系發f(key)=adress,根據key來計算adress,

這樣可以一次查找。f既是存儲過程中用來指引資料存儲到什麼位置的函數,也是将來查找這個位置

的算法,叫做雜湊演算法。

2.雜湊演算法

  雜湊演算法可以随意設計,比如:直接定址法,平方取中法,除數取餘法。雜湊演算法的本質是

計算一個數字。

3.哈希沖突

  算法如果不夠嚴謹,會造成哈希沖突,就是查找出來的重複了,即多條記錄都

映射在一個位置上。哈希沖突跟哈希函數的設計正相關的,随機性越大,那麼産生哈希沖突的可能性越小,

在小機率情況如果還有沖突怎麼辦,這時需要做一些有損的設計,比如哈希再哈希。

4.哈希用途

  某些資料會被高頻率查詢,資料量大,資料類型不唯一。

  Hash表,他是一種資料結構,一種效率極高的查找方式。哈希表的核心在于哈希函數的設計,哈希沖突了不要緊,

我們要增加随機性以及對沖突進行适當的有損化處理。

 5.字典和哈希表差別?

    哈希表和字典在内容實作上比較相似,不同的是字典不需要裝箱和拆箱操作,是以在添加資料時

效率上高一點,但是在頻繁調用資料時字典更快一些。

    哈希表:

        ①存入資料不限制類型和數量。

        ②存值時,哈希表以鍵值對的形式存入資料,且值不允許重複。

        ③取值時,取值時找key,key找value。

    字典:

        ①鍵和值得類型取決于定義字典時的設定類型。

        ②鍵必須唯一,值不需要唯一。