c 中使用雜湊表

2021-10-01 04:45:21 字數 837 閱讀 7022

雜湊表(hash table,也叫雜湊表),是根據關鍵碼值(key value)而直接進行訪問的資料結構。也就是說,它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做雜湊函式,存放記錄的陣列叫做雜湊表。

雜湊表是演算法在時間和空間上作出權衡的經典例子

如果沒有記憶體限制,我們可以直接將鍵作為(可能是乙個超大的)陣列的索引,那麼所有查詢操作只需要訪問記憶體一次即可完成。但這種理想情況不會經常出現,因為當鍵很多時需要的記憶體太大。另一方面,如果沒有時間限制,我們可以使用無序陣列並進行順序查詢,這樣就只需要很少的記憶體。而雜湊表則使用了適度的空間和時間並在這兩個極端之間找到了一種平衡。事實上,我們不必重寫**,只需要調整雜湊演算法的引數就可以在空間和時間之間作出取捨。我們會使用概率論的經典結論來幫組我們選擇適當的引數。

使用hash的查詢演算法分為兩步:

① 用hash函式將被查詢的鍵轉化為陣列的乙個索引。

理想情況下,不同的鍵都能轉化為不同的索引值。當然,這只是理想情況,所以我們需要面對兩個或者多個鍵都會雜湊到相同的索引值的情況。

② 處理碰撞衝突的過程

下面是個小例子:

using

system

;using

system

.collections

;namespace

else//

獲取鍵的集合

icollection

key=ht.

keys

;foreach

(stringkin

key)

console

.readkey()

;}}}

C 中使用雜湊表Hashtable

一,雜湊表 hashtable 簡述 在.net framework中,hashtable是system.collections命名空間提供的乙個容器,用於處理和表現類似keyvalue的鍵值對,其中key通常可用來快速查詢,同時key是區分大小寫 value用於儲存對應於key的值。hashtab...

雜湊表(雜湊表) C 實現

雜湊函式就是 關鍵字key 到 值value 的對映 value f key value反映的是關鍵字key的儲存位址。直接定址法 f key a key b 例如存放不同出生年份的人口數量,出生年份是關鍵字,那麼可以用直接定址法。直接定址法的優點是簡單均勻,也不會產生衝突 缺點是該方法適合表比較小...

C 開雜湊雜湊表(雜湊桶)

開雜湊概念 開雜湊法又叫鏈位址法 開鏈法 首先對關鍵碼集合用雜湊函式計算雜湊位址,具有相同位址的關鍵碼歸於同一子集合,每乙個子集合稱為乙個桶,各個桶中的元素通過乙個單鏈表連線起來,各鍊錶的頭結點儲存在雜湊表中。開雜湊中每個桶中放的都是發生雜湊衝突的元素。節點定義 template class v s...