package search;
/* * 雜湊查詢(線性探測法):位置=存數(即要存的資料)%p //p取小於等於長度的最大素數
* 解決衝突時往下移乙個位置
* 即(存數+1)%p....直至找到位置
* * 能儲存的元素個數=p
* * 補充知識點:
* 1、&&和||是短路運算子(&&:當第乙個條件為false,不用判斷第二個條件)
* (||:當第乙個條件為true,不用判斷第二個條件)
* 2、%和|是非短路運算子:兩個條件都需要判斷
*/public class hashsearch
} hash[t]=key;
} public static int getmaxprime(int hash)
while (isprime(maxprime)==false)
return maxprime; }
public static boolean isprime(int prime)
} return judge;
} /*
* 第一種查詢方法:
* (1)hash[t](即當前判斷元素為空):在查詢過程**現hash[t]為空,元素從未插入
* (因為元素插入過程如果有空,應立即插在該位置上,返回-1)
* (2)hash[t](即當前判斷元素不為空):第一種==key(查詢成功,返回位置t)
* 第二種!=key(不匹配,移至下一位置繼續查詢)
* ,未找到返回-1
*/public static int hashsearchone(int hash,int key) else
if (t==pos)return -1; //查詢失敗,表已全部查完
} return -1; //當前位置為空,查詢失敗
} /*
* 第二種查詢方法:
* (1)hash[t]==key:查詢成功
* (2)hash[t]!=key:第一種為空:查詢失敗
*/public static int hashsearchtwo(int hash,int key) else
if(t==pos) return -1; //表已走完,未找到元素
} return t; //查詢成功
}}
package search;
public class test ;
for (int i = 0; i < key.length; i++)
system.out.println("hash表的儲存結構:");
for (int i = 0; i < hashsearch.getmaxprime(hash); i++)
system.out.println("5的索引:"+hashsearch.hashsearchone(hash, 5));
system.out.println("2的索引:"+hashsearch.hashsearchone(hash, 2));
system.out.println("5的索引:"+hashsearch.hashsearchtwo(hash, 5));
system.out.println("2的索引:"+hashsearch.hashsearchtwo(hash, 2));
}}
雜湊查詢 HashSearch
hash函式就是把任意長的輸入字串變化成固定長的輸出字串的一種函式。輸出字串的長度稱為hash函式的位數。雜湊表的長度 關鍵字的長度 關鍵字的分布情況 雜湊函式的計算簡單,快速 雜湊函式能將關鍵字集合k均勻地分布在位址集上,使衝突最小。首先用關鍵字key乘上某個常數a 0 a 1 並抽取出key a...
查詢 雜湊表查詢(雜湊表)
1 雜湊表查詢定義 雜湊技術是在記錄的儲存位置和它的關鍵字之間建立乙個確定的對應關係f,使得每個關鍵字key對應乙個儲存位置f key 查詢時,根據這個確定的對應關係找到給定值key的對映f key 若查詢集合中存在這個記錄,則必定在f key 的位置上。採用雜湊技術將記錄儲存在一塊連續的儲存空間中...
資料結構查詢 雜湊查詢(雜湊查詢)
通常我們查詢資料都是通過乙個乙個地比較來進行,有一種方法,要尋找的資料與其在資料集中的位置存在一種對應的關係,通過這種關係就能找到資料的位置。這個對應關係成為雜湊函式 雜湊函式 因此建立的表為雜湊表 雜湊表 雜湊查詢是關鍵字與在資料集中的位置一一對應,通過這種對應關係能快速地找到資料,雜湊查詢中雜湊...