1. 程式人生 > >數據結構—散列表查找(哈希)

數據結構—散列表查找(哈希)

概念 序列 構造 返回 計算 都是 開始 style 結構

順序表查找某個關鍵字的記錄時,要從表頭開始,挨個的比較a[i]與key的值時"="還是"≠",直到相等才返回i,表示查找成功,例如我們可以通過a[i]與key相比結果的 大或者小來進行折半查找到序列的下標;再通過順序存儲的存儲位置計算法:LOC (ai)=LOC(a1)+(i-1)×c,得到內存地址,此時發現為了查找到結果,““比較”都是不可避免的,但是真的有必要嗎?能否直接通過關鍵字Key找到記錄的內存地址呢?答案是有的!

散列表概念

散列技術:在記錄的存儲位置和它的關鍵字之間建立一個確定的對應關系f,使得每個關鍵字key對應一個存儲位置f(key),關鍵字相應的記錄存儲位置稱為散列地址。

散列技術既是一種存儲方法,也是一種查找方法。

散列表查找步驟

散列技術適用範圍

散列技術適合求解問題是查找與給定值相等的記錄。查找速度快。
散列技術不適合範圍查找,不適合查找相同關鍵字的記錄,不適合獲取記錄的排序,最值。

散列函數構造

處理散列沖突

沖突:關鍵字key1不等於key2。但f(key1)=f(key2)。

未完待續。。。。。。。。。。。。。

數據結構—散列表查找(哈希)