我們現已有的查詢方式及其複雜度有以下幾種:
順序查詢 :o(n)
二分靜態查詢: o(logn)
二叉搜尋樹: o(n)
而在現實生活中,比如qq的使用者資料庫,它可能有上億的資料需要查詢,而我們運用上面哪一種都不太合適,由此我們的前輩想出了一種雜湊查詢的方法。
雜湊查詢,是將儲存位置與查詢資料關鍵字運用某種數學關係串聯起來的方法。
這種對應關係叫做雜湊函式或者雜湊(hash)函式。
雜湊查詢法的兩項基本工作:
解決衝突;
因為既然是對應關係,可能會有兩個元素通過hash函式之後得出的儲存位置是同乙個,那麼我們還要解決這個問題所帶來的後果。
除留餘數法
雜湊函式:
h(key)=key mod p
p可以自己選擇。
數字分析法
h(key)=atoi(key+n)
n是自己分析出的比較具有特點的數,比如你的身份證號上的生日位等等。
字元關鍵字的雜湊函式構造:
貼上乙個我以前寫的字串雜湊的部落格
字串雜湊
開放位址法
定義:一旦儲存位置發生了衝突,那麼就去設定乙個式子去尋找另外乙個空的雜湊位址。
基本公式:
hi(key)=(h(key)+di)mod tablesize(1<=ii的不同則衍生出三種不同的衝突解決方案。
線性探測:di=i;
二次探測:di=+i2或者-i2
(一次正一次負)
雙雜湊:di=i*h2(key)
在新增乙個雜湊函式。
分離鏈結法
這種方法是將關鍵字為同義詞的資料物件通過結點鏈結儲存在同乙個單鏈表內。
這裡再次打個廣告
貼上乙個我以前寫的字串雜湊的部落格
字串雜湊
資料結構查詢 雜湊查詢(雜湊查詢)
通常我們查詢資料都是通過乙個乙個地比較來進行,有一種方法,要尋找的資料與其在資料集中的位置存在一種對應的關係,通過這種關係就能找到資料的位置。這個對應關係成為雜湊函式 雜湊函式 因此建立的表為雜湊表 雜湊表 雜湊查詢是關鍵字與在資料集中的位置一一對應,通過這種對應關係能快速地找到資料,雜湊查詢中雜湊...
資料結構之雜湊表查詢 雜湊表
這個知識點不難,話不多說,直接上 如下 1 include stdafx.h 2 include3 define success 1 4 define unsuccess 0 5 define hashsize 12 定義雜湊表長為陣列的長度 6 define nullkey 3276878 usi...
雜湊查詢 資料結構
假定乙個集合為s 集合長度為n 假定選取的雜湊函式為 h k k m 即用元素的 關鍵字k整除以雜湊表的長度m 假定k和m均為正整數,並且m n 取餘數作為儲存該元素的雜湊位址。h 18 18 13 5 h 75 75 13 10 h 60 60 13 8 h 43 43 13 4 h 54 54 ...