📄 ds9.4.2.htm
字号:
yes"> </span>7<span style="mso-spacerun: yes"> </span>3<span style="mso-spacerun: yes">
</span>9<span style="mso-spacerun: yes"> </span>1<span style="mso-spacerun: yes">
</span>9<span style="mso-spacerun:
yes"> </span></b></font></span></p>
<p class="MsoNormal" style="line-height:10.0pt;mso-line-height-rule:exactly"><font color="#FFFFFF" size="5"><b><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"">─────────────</span></b></font></p>
<p class="MsoNormal" style="line-height:10.0pt;mso-line-height-rule:exactly"><font size="5"><b><font color="#FFFFFF"><span style="mso-spacerun: yes; mso-bidi-font-size: 10.0pt" lang="EN-US"> </span><span style="mso-bidi-font-size: 10.0pt; font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">①</span><span style="mso-bidi-font-size: 10.0pt">
</span><span style="mso-bidi-font-size: 10.0pt; font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">②</span><span style="mso-spacerun: yes; mso-bidi-font-size: 10.0pt"> </span><span style="mso-bidi-font-size: 10.0pt; font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">③</span><span style="mso-bidi-font-size: 10.0pt">
</span><span style="mso-bidi-font-size: 10.0pt; font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">④</span><span style="mso-bidi-font-size: 10.0pt">
</span><span style="mso-bidi-font-size: 10.0pt; font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">⑤</span><span style="mso-bidi-font-size: 10.0pt">
</span><span style="mso-bidi-font-size: 10.0pt; font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">⑥</span><span style="mso-bidi-font-size: 10.0pt">
</span><span style="mso-bidi-font-size: 10.0pt; font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">⑦</span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt"><o:p>
</o:p>
</span></font></b></font></p>
<p class="MsoNormal"><span lang="EN-US"><font color="#FFFFFF" size="5"><b> </b></font><o:p>
</o:p>
</span></p>
<p class="MsoNormal"><b><font size="5" color="#FFFF00"><span style="mso-bidi-font-size: 10.0pt; font-family: 黑体">四</span></font><span style="mso-bidi-font-size: 10.0pt; font-family: 黑体"><font size="5" color="#FFFF00"><span lang="EN-US">.
平方取中法</span></font><span lang="EN-US"><font size="5" color="#FFFFFF"><o:p>
</o:p>
</font></span></span></b></p>
<b><font size="5" color="#FFFFFF"><span style="mso-bidi-font-size: 10.0pt"><span style="mso-spacerun: yes; mso-bidi-font-size: 10.0pt; font-family: Times New Roman; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA" lang="EN-US">
</span><span style="mso-bidi-font-size: 10.0pt; font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">对关键码平方后,按哈希表大小,取中间的若干位作为哈希地址。</span></span></font></b>
<p class="MsoNormal"><b><span style="mso-bidi-font-size: 10.0pt; font-family: 黑体"><font size="5" color="#FFFF00">五</font></span><span lang="EN-US" style="mso-bidi-font-size: 10.0pt; font-family: 黑体"><font size="5" color="#FFFF00">.
折叠法(Folding)</font><font size="5" color="#FFFFFF"><o:p>
</o:p>
</font></span></b></p>
<p class="MsoNormal"><span style="mso-spacerun: yes" lang="EN-US"><font size="5" color="#FFFFFF"><b>
</b></font></span><font size="5" color="#FFFFFF"><b><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"">此方法将关键码自左到右分成位数相等的几部分,最后一部分位数可以短些,然后将这几部分叠加求和,并按哈希表表长,取后几位作为哈希地址。这种方法称为折叠法。</span></b></font></p>
<p class="MsoNormal"><b><font size="5" color="#FFFFFF"><span style="mso-spacerun: yes" lang="EN-US"> </span><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"">有两种叠加方法:</span></font></b></p>
<ol>
<li>
<p class="MsoNormal"><b><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman""><font size="5" color="#FFFF00">移</font></span><font size="5" color="#FFFF00"><span style="font-family:宋体;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">位</span><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"">法</span></font><font size="5" color="#FFFFFF"> <span style="font-family:宋体;mso-ascii-font-family:
"Times New Roman";mso-hansi-font-family:"Times New Roman"">──</span>
<span style="font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"">将各部分的最后一位对齐相加。</span></font></b></li>
<li>
<p class="MsoNormal"><b><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman""><font size="5" color="#FFFF00">间界叠加法</font></span><font size="5" color="#FFFFFF">
<span style="font-family:
宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">──</span>
<span style="font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"">从一端向另一端沿各部分分界来回折叠后,最后一位对齐相加。</span></font></b></li>
</ol>
<p class="MsoNormal"><b><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman""><font size="5" color="#FFFF00">【例</font></span><font size="5" color="#FFFF00"><span lang="EN-US">9.11</span><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"">】</span></font><font size="5" color="#FFFFFF"><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"">关键码为</span><span lang="EN-US">
key=05326248725</span><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"">,设哈希表长为三位数,则可对关键码每三位一部分来分割。</span></font></b></p>
<p class="MsoNormal"><b><font size="5" color="#FFFFFF"><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:
"Times New Roman"">关键码分割为如下四组:</span><span lang="EN-US"><span style="mso-spacerun: yes">
</span><u>253</u><span style="mso-spacerun:
yes"> </span><u>463</u><span style="mso-spacerun: yes"> </span><u>587</u><span style="mso-spacerun: yes">
</span><u><span style="mso-spacerun:
yes"> </span>05</u></span></font></b></p>
<p class="MsoNormal" align="center"><font size="5" color="#FFFFFF"><b><span style="mso-bidi-font-size: 10.0pt; font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><img border="0" src="ds9.4.1.gif" width="278" height="259"></span></b></font></p>
<font size="5" color="#FFFFFF"><b><span style="mso-bidi-font-size: 10.0pt; font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman; mso-bidi-font-family: Times New Roman; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">
用上述方法计算哈希地址</span></b></font><span style="font-family:宋体;
mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman""><b><font size="5" color="#FFFFFF">对于位数很多的关键码,且每</font></b></span>
<p class="MsoNormal"><span style="font-family:宋体;mso-ascii-font-family:"Times New Roman";
mso-hansi-font-family:"Times New Roman""><b><font size="5" color="#FFFFFF">一位上符号分布较均匀时,可采用此方法求得哈希地址。</font></b></span></p>
<p class="MsoNormal"><b><span style="font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman"><font size="5" color="#FFFF00">六.随机数法</font></span></b></p>
<p class="MsoNormal"><b><font size="5" color="#FFFFFF">
选择一个随机函数,取关键字的随机函数值为它的哈希地址,即H(key)=random(key),其中random为随机函数。通常,当关键字长度不等时采用此法构造哈希函数较恰当。</font></b></p>
<p align="left"><font size="5" color="#FFFFFF"><b>
实际工作中需视不同的情况采用不同的哈希函数。通常,考虑的因素有:</b></font></p>
<blockquote>
<ol>
<li>
<p align="left"><font size="5" color="#FFFFFF"><b>计算哈希函数所需时间(包括硬件指令的因素)</b></font></li>
<li>
<p align="left"><font size="5" color="#FFFFFF"><b>关键字的长度</b></font></li>
<li>
<p align="left"><font size="5" color="#FFFFFF"><b>哈希表的大小</b></font></li>
<li>
<p align="left"><font size="5" color="#FFFFFF"><b>关键字的分布情况</b></font></li>
<li>
<p align="left"><font size="5" color="#FFFFFF"><b>记录的查找频率</b></font></li>
</ol>
</blockquote>
<p align="center"><b><font size="5"><a href="ds9.4.HTM"><font color="#FFFF00">返回</font></a></font></b></p>
<!--mstheme--></font>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -