當資料沒有數字可以當作索引,或是資料間當作索引的數字差距太大,導致 Array 過長,就可以透過某種 Hash function 把資料中某個 Key 雜湊為較小數字的索引,這樣就更容易儲存資料,也好存取。
Hash Table 是一個陣列,陣列中每個元素都是一個 bucket。
選出每筆資料都有的一個值當作 key(如姓名、編號),經過
hash
函式後可以得到索引,藉此知道資料要放在 Hash Table 中哪個 bucket 中。若遍歷原始資料 hash 過後,得到重覆的索引,就稱作衝突,可以用 Array 或是 Linked List 的結構讓資料共存在 bucket 內。
公開的方法:set、get、delete
私有的方法:hash
時間複雜度
- set:O(1)
- Delete: O(1)
- get: O(1):能夠透過 hash function 直接找出該 key 對應的 bucket
評論