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

📄 ds10.1.htm

📁 这是清华大学所用的数据结构的电子版教材
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>数 据 结 构</title>
<meta name="Microsoft Theme" content="hounk 010">
</head>

<body background bgcolor="#000099" text="#CCCC99" link="#FF9900" vlink="#996600" alink="#FF3300">

<!--mstheme--><font face="宋体"><p:colorscheme
 colors="#0000FF,#FFFFFF,#000000,#FFCC66,#00FFFF,#3366FF,#FF0033,#FFFF00"/>
<p align="center"><b><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"><font size="6" color="#FFFF00">10.1  
概述</font></span></b></p>
<p class="MsoNormal"><b><font size="5" color="#FFFFFF"><span style="mso-spacerun: yes" lang="EN-US">&nbsp;&nbsp;&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><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 lang="EN-US">(Sorting)</span><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">B-</span><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">B+</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="mso-spacerun: yes" lang="EN-US">&nbsp;&nbsp;&nbsp; 
</span><span style="font-family:宋体;mso-ascii-font-family:&quot;Times New Roman&quot;;mso-hansi-font-family:
&quot;Times New Roman&quot;">若对任意的数据元素序列,使用某个排序方法,对它按关键码进行排序:若相同关键码元素间的位置关系,排序前与排序后保持一致,称此排序方法是</font><b style="mso-bidi-font-weight:normal"><font size="5" color="#FFFF00">稳定</font></b><font size="5" color="#FFFFFF">的;而不能保持一致的排序方法则称为</font><b style="mso-bidi-font-weight:
normal"><font size="5" color="#FFFF00">不稳定</font></b><font size="5" color="#FFFFFF">的。</font></span></b><span lang="EN-US"><b><font size="5" color="#FFFFFF">&nbsp;<o:p>
</o:p>
</font></b></span></p>
<p class="MsoNormal"><b><font size="5" color="#FFFFFF"><span style="font-family:黑体;mso-ascii-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;">:</font><font size="5" color="#FFFF00">内排序</font><font size="5" color="#FFFFFF">和</font><font size="5" color="#FFFF00">外排序</font><font size="5" color="#FFFFFF">。</font></span></b></p>
<!--mstheme--></font>
<!--msthemelist--><table border="0" cellpadding="0" cellspacing="0" width="100%">
  <!--msthemelist--><tr>
    <!--msthemelist--><td valign="baseline" width="42"><img src="aricebu1.gif" width="15" height="15" hspace="13"></td>
    <td valign="top" width="100%"><!--mstheme--><font face="宋体">
      <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></font></b><!--mstheme--></font><!--msthemelist--></td>
  </tr>
  <!--msthemelist--><tr>
    <!--msthemelist--><td valign="baseline" width="42"><img src="aricebu1.gif" width="15" height="15" hspace="13"></td>
    <td valign="top" width="100%"><!--mstheme--><font face="宋体">
      <p class="MsoNormal"><b><span style="font-family:黑体"><font size="5" color="#FFFF00">外排序</font></span><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><font size="5" color="#FFFFFF">指排序过程中还需访问外存储器,足够大的元素序列,因不能完全放入内存,只能使用外排序。</font></span></b><!--mstheme--></font><!--msthemelist--></td>
  </tr>
<!--msthemelist--></table>
<!--mstheme--><font face="宋体">
<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">&nbsp; 
通常,在排序的过程中需列两种基本操作:</span></font></b></p>
<ol>
  <li>
    <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></font></b></li>
  <li>
    <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></font></b></li>
</ol>
<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">&nbsp; 
第一种操作对大多数排序方法来说都是必要的,而后一种操作可以通过改变记录的存储方式来予以避免;在本课程中待排序的一组记录存放在地址连续的一组存储单元上,类似于线性表的顺序存储结构,且为讨论方便,设记录的关键字均为整数,类型定义如下:</span></font></b></p>
<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF"><span style="font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">#define 
MAXSIZE 20</span></font></b></p>
<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF"><span style="font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">typedef 
int KeyType;</span></font></b></p>
<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF"><span style="font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">typedef 
struct{</span></font></b></p>
<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF"><span style="font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">&nbsp;KeyType 
key;</span></font></b></p>
<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF"><span style="font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">&nbsp;InfoType 
otherinfo;</span></font></b></p>
<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF"><span style="font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">}RedType;</span></font></b></p>
<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF"><span style="font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">typedef 
struct{</span></font></b></p>
<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF"><span style="font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">&nbsp;RedType 
r[MAXSIZE+1];</span></font></b></p>
<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF"><span style="font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">&nbsp;int 
length;</span></font></b></p>
<p class="MsoNormal" style="margin-top: 0; margin-bottom: 0"><b><font size="5" color="#FFFFFF"><span style="font-family: 宋体; mso-ascii-font-family: Times New Roman; mso-hansi-font-family: Times New Roman">}SqList;</span></font></b></p>
<p class="MsoNormal" align="center"><b><font size="5"><a href="ds10.htm"><font color="#FFFF00">返回</font></a></font></b><span lang="EN-US"><o:p>
</o:p>
</span></p>
<!--mstheme--></font>

</body>

</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -