为学习目的,我撰写我自己执行散页地图。 http://en.wikipedia.org/wiki/Hash_table#Separate_chaining_with_list_heads” rel=“nofollow” 作为我的主题。
This is what the structure would look like:
| 0 | ---> | 11 | ---> | 33 | ---> | -- | ---> | 121 | ---> | TAIL |
| 1 | ---> | 12 | ---> | 34 | ---> | -- | ---> | 122 | ---> | TAIL |
| - |
| - |
| - |
| D-1 | ---> | -- | ---> | -- | ---> | -- | ---> | -- | ---> | TAIL |
这是一系列相互关联的清单,
<>D>/strong> = 阵容大小,
缩略语
Algorithm:
void Insert(key, value):
int bucket = hash_fn(key); // key % D, for now
// accessing this bucket or array-index in array is O(1)
// insert in linked list at the right position
LL[bucket]->insert(new object(key, value))
bool Lookup(key):
int bucket = hash_fn(key); // key % D, for now
// search for key in LL[bucket]
<>Concern: 如果把许多要素绘制成同一个桶,则搜查不会是O(1),事实上,可能倾向于O(n)。
我如何改进?