資料結構實驗之查詢五 平方之雜湊表

2021-08-13 11:11:30 字數 1172 閱讀 5314

time limit: 400ms

memory limit: 65536kb

submit

statistic

problem description

給定的一組無重複資料的正整數,根據給定的雜湊函式建立其對應hash表,雜湊函式是h(key)=key%p,p是雜湊表表長,p是素數,處理衝突的方法採用平方探測方法,增量di=±i^2,i=1,2,3,...,m-1

input

輸入包含多組測試資料,到 eof 結束。

每組資料的第1行給出兩個正整數n(n <= 500)和p(p >= 2n的最小素數),n是要插入到雜湊表的元素個數,p是雜湊表表長;第2行給出n個無重複元素的正整數,資料之間用空格間隔。

output

按輸入資料的順序輸出各數在雜湊表中的儲存位置 (hash表下標從0開始),資料之間以空格間隔,以平方探測方法處理衝突。

example input

4 11

10 6 4 15

9 11

47 7 29 11 9 84 54 20 30

example output

10 6 4 5

3 7 8 0 9 6 10 2 1

用雜湊表來儲存資料實際上就是乙個根據雜湊函式找到資料在陣列中對應的下標的乙個過程,只不過我們在選擇雜湊函式的時候會出現不同的key

但是出現了相同的下標,此時我們就要處理衝突,此題要求我們用平方探測的方法來處理,也就是在x = hash(key)的基礎上找x+1 x-1 x+4 x-4……

這些下標看是否可以找到不衝突的位置,總之會在k-1個之內找到改資料存放的位置。

#include #include using namespace std;

int main(){

ios::sync_with_stdio(false);

int hash[550];

int n, k;

while(cin>>n>>k){

memset(hash, -1, sizeof(hash));

for(int i = 0; i < n; i++){

int x;

cin>>x;

x = x % k;

hash[x]++;

if(hash[x] == 0)

cout<

資料結構實驗之查詢五 平方之雜湊表

time limit 400ms memory limit 65536k 給定的一組無重複資料的正整數,根據給定的雜湊函式建立其對應hash表,雜湊函式是h key key p,p是雜湊表表長,p是素數,處理衝突的方法採用平方探測方法,增量di i 2,i 1,2,3,m 1 輸入一組測試資料,資料...

資料結構實驗之查詢五 平方之雜湊表

time limit 400ms memory limit 65536k 有疑問?點這裡 給定的一組無重複資料的正整數,根據給定的雜湊函式建立其對應hash表,雜湊函式是h key key p,p是雜湊表表長,p是素數,處理衝突的方法採用平方探測方法,增量di i 2,i 1,2,3,m 1 輸入一...

資料結構實驗之查詢五 平方之雜湊表

time limit 400ms memory limit 65536k 給定的一組無重複資料的正整數,根據給定的雜湊函式建立其對應hash表,雜湊函式是h key key p,p是雜湊表表長,p是素數,處理衝突的方法採用平方探測方法,增量di i 2,i 1,2,3,m 1 輸入一組測試資料,資料...