到了有序表(已排序的表)查詢時,我們可以利用a[i]與key的「<」 或 「>」,來折半查詢,直到相等時查詢成功返回i。
反正我們的目標就是要找到那個 i 值,是不是還有其它好點的方法呢?
乙個小故事
試想這樣的場景,你很想學太極拳,聽說學校有個叫張三丰的人打得特別好,於是你到學校學生處找人。學生處的工作人員可能會拿出學生名單,乙個乙個的查詢, 最終告訴你,學校沒這個人,並說張三丰幾百年前就已經在武當山作古了。可如果你找對了人,比如在操場上找那些愛運動的同學,人家會告訴你,「哦,你找張三丰呀, 有有有,我帶你去。」於是他把你帶到了體育館內,並告訴你,那個教大家打太極的小夥子就是「張三丰」,原來「張三丰」 是因為他太極拳打得好而得到的外號。
資料結構的知識可以和生活上的事情模擬,查詢其實跟找人就很像。學生處的老師找張三丰,那就是順序表查詢,依賴的是姓名關鍵字的比較。
而通過愛好運動的同學詢問時
,沒有遍歷,沒有比較,就憑他們「欲找太極『張三丰』,必在體育館當中」的經驗,直接告訴你位置。
也就是說,我們只需要通過某個函式f,使得
儲存位置 = f(關鍵字)
那樣我們可以通過查詢關鍵字不需要比較就可獲得需要的記錄的儲存位置。
這就是一種新的儲存技術——雜湊技術。
雜湊技術與雜湊表
雜湊技術是在記錄的儲存位置和它的關鍵字之間建立乙個確定的對應關係f,使得每個關鍵字key對應乙個儲存位置f(key)。
查詢時,根據這個確定的對應關係找到給定值key的對映f(key),若查詢集合中存在這個記錄,則必定在f(key)的位置上。
這裡我們把這種對應關係f稱為雜湊函式,又稱為雜湊(hash)函式。按這個思想,採用雜湊技術將記錄儲存在一塊連續的儲存空間中,這塊連續儲存空間稱為
雜湊表或雜湊表
(hashtable)。那麼關鍵字對應的記錄儲存位置我們稱為雜湊位址。
雜湊表(雜湊表)的定義
chapter 雜湊表 雜湊表 1.雜湊表 雜湊表 的定義 2.雜湊表是怎麼進行查詢的?3.雜湊函式設計 直接定址法 4.雜湊函式設計 除留餘數法 5.雜湊衝突處理 開放定址法 6.雜湊衝突處理 鏈位址法 7.雜湊表的鏈位址法實現 8.linux核心中的hash與bucket 9.引入雜湊桶的概念來...
1 雜湊表(雜湊表)的定義
一般的查詢 給你乙個順序表,你會如何查詢某個給定的元素?到了有序表 已排序的表 查詢時,我們可以利用a i 與key的 或 來折半查詢,直到相等時查詢成功返回i。反正我們的目標就是要找到那個 i 值,是不是還有其它好點的方法呢?乙個小故事 試想這樣的場景,你很想學太極拳,聽說學校有個叫張三丰的人打得...
雜湊表 雜湊表
一 定義 雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做雜湊函式,存放記錄的陣列叫做雜湊表。雜湊表的做法其實很簡單,就是把key通過乙個固定的演算法函式...