在計算機科學中,哈希表是一種用于存儲數據的數據結構,它由一系列值組成,稱為鍵,與相應的值列表(稱為數組)配對。例如,企業名稱可能與其地址成對出現。通常,數組中的每個值都有一個稱為散列的位置號。散列函數通常是一組指令或...
在計算機科學中,哈希表是一種用于存儲數據的數據結構,它由一系列值組成,稱為鍵,與相應的值列表(稱為數組)配對。例如,企業名稱可能與其地址成對出現。通常,數組中的每個值都有一個稱為散列的位置號。散列函數通常是一組指令或一種算法,將每個鍵值映射為散列-將企業名稱與其地址、電話號碼和業務類別連接起來,例如,哈希函數的目的是將每個鍵分配給數組中唯一的對應值;這通常被稱為哈希。哈希函數的格式必須正確,哈希表才能正常工作。

哈希表是一種數據結構,用于存儲由一組稱為鍵的值組成的數據與相應的值列表配對,一個哈希表在一組數據上的性能取決于它的哈希函數的效率。一個好的哈希函數通常提供一個統一的鍵查找和均勻的分布對應數組中的映射。當兩個鍵分配給相同的對應值時,會發生哈希沖突。當發生哈希沖突時,通常會再次執行哈希函數,直到找到唯一的對應值;這通常會導致哈希時間更長。雖然哈希表中的鍵數通常為修正了,有時可能有重復的密鑰即使如此,一個設計良好的哈希表也有有效的哈希函數,可以將每個鍵映射到數組中唯一的對應值,哈希表中效率低下的哈希函數也可能生成映射簇。如果哈希函數為現有鍵創建映射簇,則會增加查找相應值所需的時間。這會減慢對未來鍵的哈希處理,因為大多數哈希函數通常會查找下一個可用的在數組中的位置。如果已經分配了一個大的值簇,則通常需要更長的時間來尋找一個新的鍵的未分配值。加載因子是另一個與哈希函數的效率有關的概念;加載因子是與哈希表中相應數組的總大小相關的已存在哈希值的量。它通常是通過將已分配的鍵的數目除以相應數組的大小來定義的。隨著加載因子的增加,一個好的哈希函數通常仍會保持一個恒定的數目碰撞和聚集到某一點。通常這個閾值可以用來確定哈希函數在給定的密鑰數下的效率,以及何時需要一個新的哈希函數努力生成完美的哈希函數-在負載因子增加的情況下不會產生沖突或簇。理論上,產生完美哈希表的關鍵是生成一個完美的哈希函數研究人員認為,在一般情況下,哈希函數在達到一個常數的情況下,在沒有達到一個完美的閾值的情況下,哈希函數仍然可以達到理想的性能。