資料查詢演算法 一 雜湊演算法

2021-09-28 22:08:56 字數 1048 閱讀 4493

順序查詢是最簡單的查詢方式,需要對資料注意匹配,所以效率相對較低,不適合大資料量的查詢.

二分查詢雖然效率很好,但是要求資料必須是有序的,對資料進行排序通常需要很多的時間開銷.

深度優先遍歷和廣度優先遍歷對於大資料量的查詢問題效率不高.

雜湊查詢由於查詢速度快,查詢、插入、刪除操作簡單等原因而被廣泛使用。

根據資料量預先設定乙個長度為m的陣列,使用乙個雜湊函式f並以資料的關鍵字作為自變數,得到唯一的返回值,返回值的範圍為0-m-1,這樣就可以利用雜湊函式f將資料元素對映到陣列的某一位下標並把資料存放在對應位置上。查詢時,利用雜湊函式f計算該資料的存放下標,再到相應的位置取出查詢的資料。

例如:3,8,6,11需要儲存,雜湊函式為f(x)=x%4

3%4 =3            8%4=0           6%4=2     11%4=386

3此時,就會出現位址衝突問題。出現問題的原因是雜湊函式沒有設計好。如果設定的雜湊函式能夠將資料的關鍵字對映為乙個唯一位址,查詢的時間複雜度為o(1)。但是如果設計的不是很好,就會有很多衝突,就要查詢很多次,最壞變為順序查詢.但是無論怎樣做,位址衝突是無法避免的.

解決抵制衝突的方法是鏈位址法,二次再雜湊法,線性探測再雜湊法,建立公共溢位區。 

兩數之和

輸入一組數,從中找到和為m的兩個數

例如,輸入3 2 4 3 7 輸出 3 3     2 4

輸出

單詞模式匹配問題

輸入兩個字串,乙個是單詞模式字串,另乙個是目標字串.之後檢查目標字串是否為給定的單詞模式.

例如:輸入單詞模式字串一 二 二 一 和目標字串蘋果 香蕉 香蕉 蘋果,二者模式相同,匹配成功.

輸出

查詢演算法 雜湊演算法,雜湊表查詢

那麼問題來了,如果集合s中同時存在值k 16和值k 27,我們該如何將兩個位址一樣的值存入雜湊表呢?常用的雜湊函式 處理衝突的方法 2.連位址法 雜湊表涉及的是一種對映關係,可以根據某個值查詢到關鍵字的位址,這樣的做法省去了比較的時間,優化了演算法。雜湊表是把值 關鍵字 存到跟它具有 唯一 對映的格...

演算法 查詢 雜湊表查詢

查詢除了線性表的查詢 順序 二分 分塊 樹上查詢 bst b 樹 還有一種雜湊查詢。相比於前兩種查詢,雜湊表的查詢效率驚人的高o 1 它採用的直接定址技術,基本上就是實現了精準打擊,達到一擊而中的效果。所謂的直接定址技術,說白了,就是儲存記錄時,通過雜湊函式計算出乙個雜湊位址 讀取記錄時,通過同樣的...

雜湊演算法 查詢失敗

雜湊函式 h key key 11 現有資料 1,13,12,34,38,33,27,22 要求 使用線性探測法處理衝突 step1 先將所有的資料裝入雜湊表彙總 1 11 1,沒有衝突 13 11 2,沒有衝突 12 11 1,下標1的位置上放置了資料1,此時衝突了,使用 線性探測法處理衝突,下標...