⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds9.4.2.htm

📁 这是清华大学所用的数据结构的电子版教材
💻 HTM
📖 第 1 页 / 共 3 页
字号:
yes">&nbsp;</span>7<span style="mso-spacerun: yes">&nbsp; </span>3<span style="mso-spacerun: yes">&nbsp; 
</span>9<span style="mso-spacerun: yes">&nbsp; </span>1<span style="mso-spacerun: yes">&nbsp; 
</span>9<span style="mso-spacerun:
yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">─────────────</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">&nbsp;</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">&nbsp;</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>&nbsp;</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">&nbsp;&nbsp;&nbsp; 
</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>&nbsp;&nbsp; 
</b></font></span><font size="5" color="#FFFFFF"><b><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">此方法将关键码自左到右分成位数相等的几部分,最后一部分位数可以短些,然后将这几部分叠加求和,并按哈希表表长,取后几位作为哈希地址。这种方法称为折叠法。</span></b></font></p>
<p class="MsoNormal"><b><font size="5" color="#FFFFFF"><span style="mso-spacerun: yes" lang="EN-US">&nbsp;</span><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">有两种叠加方法:</span></font></b></p>
<ol>
  <li>
    <p class="MsoNormal"><b><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;
mso-hansi-font-family:&quot;Times New Roman&quot;"><font size="5" color="#FFFF00">移</font></span><font size="5" color="#FFFF00"><span style="font-family:宋体;
mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:&quot;Times New Roman&quot;">位</span><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">法</span></font><font size="5" color="#FFFFFF"> <span style="font-family:宋体;mso-ascii-font-family:
&quot;Times New Roman&quot;;mso-hansi-font-family:&quot;Times New Roman&quot;">──</span> 
    <span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">将各部分的最后一位对齐相加。</span></font></b></li>
  <li>
    <p class="MsoNormal"><b><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;
mso-hansi-font-family:&quot;Times New Roman&quot;"><font size="5" color="#FFFF00">间界叠加法</font></span><font size="5" color="#FFFFFF"> 
    <span style="font-family:
宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:&quot;Times New Roman&quot;">──</span> 
    <span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">从一端向另一端沿各部分分界来回折叠后,最后一位对齐相加。</span></font></b></li>
</ol>
<p class="MsoNormal"><b><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;
mso-hansi-font-family:&quot;Times New Roman&quot;"><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:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">】</span></font><font size="5" color="#FFFFFF"><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">关键码为</span><span lang="EN-US"> 
key=05326248725</span><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">,设哈希表长为三位数,则可对关键码每三位一部分来分割。</span></font></b></p>
<p class="MsoNormal"><b><font size="5" color="#FFFFFF"><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">关键码分割为如下四组:</span><span lang="EN-US"><span style="mso-spacerun: yes">&nbsp;&nbsp; 
</span><u>253</u><span style="mso-spacerun:
yes">&nbsp;&nbsp; </span><u>463</u><span style="mso-spacerun: yes">&nbsp;&nbsp; </span><u>587</u><span style="mso-spacerun: yes">&nbsp; 
</span><u><span style="mso-spacerun:
yes">&nbsp;</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">&nbsp; 
用上述方法计算哈希地址</span></b></font><span style="font-family:宋体;
mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:&quot;Times New Roman&quot;"><b><font size="5" color="#FFFFFF">对于位数很多的关键码,且每</font></b></span>
<p class="MsoNormal"><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;
mso-hansi-font-family:&quot;Times New Roman&quot;"><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">&nbsp;&nbsp; 
选择一个随机函数,取关键字的随机函数值为它的哈希地址,即H(key)=random(key),其中random为随机函数。通常,当关键字长度不等时采用此法构造哈希函数较恰当。</font></b></p>
<p align="left"><font size="5" color="#FFFFFF"><b>&nbsp; 
实际工作中需视不同的情况采用不同的哈希函数。通常,考虑的因素有:</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 + -