
【計】 hash table
散列表(Hash Table),又稱哈希表或散列映射,是一種高效的數據結構,用于存儲鍵值對(key-value pairs)。其核心思想是利用哈希函數(Hash Function) 将鍵(key)映射到存儲位置(桶或槽),從而實現數據的快速插入、删除和查找操作。
哈希函數
将任意大小的鍵(如字符串、對象)轉換為固定大小的整數(哈希值)。理想情況下,不同鍵應映射到不同索引,但實際可能存在沖突(Collision)。
示例: 對鍵 "apple"
應用哈希函數可能輸出 3
,表示數據存儲在索引為 3 的桶中。
沖突解決
時間複雜度
操作 | 平均複雜度 | 最壞複雜度 |
---|---|---|
插入/删除/查找 | $O(1)$ | $O(n)$ |
需平衡均勻性與計算效率(如MurmurHash、SHA系列)。
紅黑樹替代鍊表(Java HashMap)減少最壞情況複雜度 。
低負載因子減少沖突但增加内存開銷,通常取 $0.7$–$0.8$ 。
# Python 字典(散列表實現)
grades = {}
grades["Alice"] = 90# 插入:哈希("Alice") → 存儲位置
print(grades["Alice"])# 查找:直接定位鍵值
grades.pop("Alice") # 删除:O(1) 複雜度
散列表(Hash Table)是一種高效的數據結構,用于存儲鍵值對(key-value pairs),通過“散列函數”将鍵(key)映射到内存中的特定位置,從而實現快速的數據插入、删除和查找操作。
散列函數(Hash Function)
将任意長度的鍵轉換為固定長度的哈希值(通常為整數)。理想情況下,不同的鍵應映射到不同的位置,但實際可能存在沖突。常見散列函數包括:
hash(key) = key % size
(對表大小取餘)。哈希沖突(Collision)
當不同鍵被映射到同一位置時發生沖突。解決方法主要有:
負載因子(Load Factor)
表示表中已存元素與總容量的比值(公式:$lambda = frac{n}{m}$,$n$為元素數,$m$為表大小)。負載因子過高會導緻沖突率上升,通常需動态擴容。
通過合理設計哈希函數和沖突策略,散列表能顯著提升數據操作效率,是計算機科學中基礎且重要的數據結構之一。
阿莫沙平百般讨好某人辦公室自動化半光制被鎖屬性材料批號倒立低溫電子學防爆震劑弗累西格氏髓鞘發生定律弗林特氏定律固體綠固有穩定性故障維修海綿窦間窦賄賂手段混合澄清器檢索語句可調整酬金擴展角靈活的信托羟基羰基合物任務控制時機雙向打印機輸卵管灌氣法輸卵管肌層瞬發中子所需保單份數同聯纖維