當前位置:編程學習大全網 - 源碼下載 - 設隨機Hash表的長度為n=8

設隨機Hash表的長度為n=8

1、設隨機Hash表的長度為n=8。設Hash碼為i=mod(k*0.618,n)。將關鍵字元素序列(19,31,20,45,01,11,25,26)填入隨機Hash表,並註明沖突次數。

①計算關鍵字k的Hash碼i0=i(k)。且令i=i0。

②偽隨機數序列初始化,令j=1(即將取隨機數指針指向偽隨機數序列中的第1個隨機數)。

③檢查表中第i項的內容:若第i項為空,則將關鍵字k及有關信息填入該項;若第i項不空,則令i=mod(i0+ RN(j),n),並令j=j+1(即將取隨機數指針指向下壹個隨機數),轉③繼續檢查。其中RN(j)表示偽隨機數序列RN中的第j個隨機數。

如圖為取隨機數的方法。

則過程為:

用取隨機數的方法取得隨機數。

可以用c++自動計算:

代碼如下:

#include<iostream>

using?namespace?std;

main()

{int?n?=?8,R?=?1;

int?RN[8],j;

for(j=1;j<=n;j++)

{

R=(5*R)%(4*n);

RN[j]=int(R/4);

cout<<RN[j]<<endl;?

}

}

結果為:1,6,7,4,5,2,3,0

看不清的點擊下載excel

2.設線性Hash表的長度n=12,分別用下列Hash碼將關鍵字元素序列(09,12,04,16,19,31,20,45,01,11,25,26)填入線性Hash表,並指出各關鍵字元素在填入過程中的沖突次數。

(1)i=mod(k,n)

(2)i=mod(k*0.618,n)

答:(1)i=mod(k,n)

(2)i=mod(k*0.618,n)

  • 上一篇:翻譯下面的英文~
  • 下一篇:Sma函數源代碼
  • copyright 2024編程學習大全網