日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

简单哈希1

發(fā)布時(shí)間:2025/4/16 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简单哈希1 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Description

使用線性探測(cè)法(Linear?Probing)可以解決哈希中的沖突問題,其基本思想是:設(shè)哈希函數(shù)為h(key)?=d,并且假定哈希的存儲(chǔ)結(jié)構(gòu)是循環(huán)數(shù)組,則當(dāng)沖突發(fā)生時(shí),繼續(xù)探測(cè)d+1,d+2,…,直到?jīng)_突得到解決。

例如,現(xiàn)有關(guān)鍵碼集為{477291116922283},設(shè)哈希表表長(zhǎng)為m=11,哈希函數(shù)為Hash(key)=key?mod?11,采用線性探測(cè)法處理沖突。

建哈希表如下:

0

1

2

3

4

5

6

7

8

9

10

11

22

?

47

92

16

3

7

29

8

?

現(xiàn)在給定哈希函數(shù)為Hash(key)=key?mod?m,要求按照上述規(guī)則,使用線性探測(cè)法處理沖突。要求建立起相應(yīng)哈希表,并按要求打印。

Input

僅有一個(gè)測(cè)試用例,第1行為整數(shù)nm1<=?n,?m<=10,000),n代表key的總數(shù),m代表哈希表的長(zhǎng)度,并且令哈希函數(shù)為Hash(key)=key?mod?m。

接下來n行,每行一個(gè)整數(shù),代表一個(gè)key,其中keykey兩兩不相同(0<=key<=10,000)。

Output

?

輸出建立好的hash表,比如下表

0

1

2

3

4

5

6

7

8

9

10

11

22

?

47

92

16

3

7

29

8

?

應(yīng)輸出

0#11

1#22

2#NULL

3#47

4#92

5#16

6#3

7#7

8#29

9#8

10#NULL

?

Sample Input 3 5 1 5 6 Sample Output 0#5 1#1 2#6 3#NULL 4#NULL

直接上代碼: 1 #include <iostream> 2 using namespace std; 3 4 int hash(int key, int len) { 5 return (key % len); 6 } 7 8 int hashTable[10000]; 9 10 void initializeHash(int size, int lenOfHash) { 11 int temp; 12 13 for (int i = 0; i < size; i++) { 14 cin >> temp; 15 16 if (hashTable[hash(temp, lenOfHash)] == -1) { 17 hashTable[hash(temp, lenOfHash)] = temp; 18 } else { 19 int pos = hash(temp, lenOfHash); 20 while (hashTable[pos] != -1) { 21 pos = (pos + 1) % lenOfHash; 22 } 23 24 hashTable[pos] = temp; 25 } 26 } 27 } 28 29 void print(int lenOfHash) { 30 for (int i = 0; i < lenOfHash; i++) { 31 if (hashTable[i] != -1) { 32 cout << i << "#" << hashTable[i] << endl; 33 } else { 34 cout << i << "#NULL" << endl; 35 } 36 } 37 } 38 39 int main() 40 { 41 int numOfKey, lenOfHash; 42 43 cin >> numOfKey; 44 cin >> lenOfHash; 45 46 for (int i = 0; i < lenOfHash; i++) { 47 hashTable[i] = -1; 48 } 49 50 initializeHash(numOfKey, lenOfHash); 51 52 print(lenOfHash); 53 54 return 0; 55 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/IT-nerd/p/3462370.html

總結(jié)

以上是生活随笔為你收集整理的简单哈希1的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。