- 1
- 0
- 约1.46万字
- 约 76页
- 2017-10-02 发布于广东
- 举报
实用数据结构(c描述)(第二版)第9章
第9章 排序技术 第9章 排序技术 9.1 互换类排序 9.2 插入类排序 9.3 选择类排序 9.4 拓扑分类 9.5 其他排序方法简介 排序是在数据处理中经常要使用的一种重要的运算。如何进行排序,特别是高效率的排序是计算机应用中的一个重要课题。排序的目的之一就是方便数据的查找。 9.1 互换类排序 9.1.1 冒泡排序 9.1.2 快速排序 9.1.1 冒泡排序 首先,从表头开始往后扫描线性表,在扫描过程中逐次比较相邻两个元素的大小。若相邻两个元素中,前面的元素大于后面的元素,则将它们互换,称之为消去了一个逆序。显然,在扫描过程中,不断地将两相邻元素中的大者往后移动,最后就将线性表中的最大者换到了表的最后。 然后从后到前扫描剩下的线性表,同样,在扫描过程中逐次比较相邻两个元素的大小。若相邻两个元素中,后面的元素小于前面的元素,则将它们互换,这样就又消去了一个逆序。显然,在扫描过程中,不断地将两相邻元素中的小者往前移动,最后就将剩下线性表中的最小者换到了表的最前面。 对剩下的线性表重复上述过程,直到剩下的线性表变空为止,此时的线性表已经变为有序。 算法:冒泡排序 输入:无序序列P(1:n)。 输出:有序序列P(1:n)。 PROCEDURE BUBSORT(P,n) k=1; m=n WHILE (k<m) DO [子表未空] { j=m-1; m=0 FOR i=k TO j DO [从前往后扫描子表] IF (p(i)>p(i+1)) THEN [发现逆序进行交换] {d=p(i);p(i)=p(i+1);p(i+1)=d;m=i} j=k+1; k=0 FOR i=m TO j BY -1 DO [从后往前扫描子表] IF (p(i-1) >p(i)) THEN[发现逆序进行交换] {d=p(i);p(i)=p(i-1);p(i-1)=d;k=i} } RETURN bubsort(p,n) int n; ET p[]; { int m,k,j,i; ET d; k=0; m=n-1; while (k<m) /*子表未空*/ { j=m-1; m=0; for(i=k;i<=j;i++) /*从前往后扫描*/ if (p[i]>p[i+1]) /*发现逆序进行交换*/ {d=p[i];p[i]=p[i+1];p[i+1]=d;m=i;} j=k+1; k=0; for (i=m;i>=j;i--) /*从后往前扫描*/ if (p[i-1] >p[i]) /*发现逆序进行交换*/ {d=p[i];p[i]=p[i-1];p[i-1]=d;k=i;} } return; } 9.1.2 快速排序 快速排序是由冒泡排序改进而得的,是一种分区交换排序方法。基本思想如下: 从线性表中选取一个元素,设为T。然后将线性表后面小于T的元素移到前面,而前面大于T的元素移到后面,结果就将线性表分成了两部分(称为两个子表),T插入到其分界线的位置处。这个过程称为线性表的分割。通过对线性表的一次分割,就以T为分界线,将线性表分成了前后两个子表,且前面子表中的所有元素均不大于T,而后面子表中的所有元素均不小于T。 之后对所分的两个子表分别重复上述过程,直到每个子表为空为止,则此时的线性表就变成了有序表。 在对线性表或子表进行分割时,可以按如下步骤: 首先,在表的第一个、中间一个与最后一个元素中选取中项,设为P(k),并将P(k)赋给T,再将表中的第一个元素移到P(k)的位置上。 然后设置两个指针i和j分别指向表的起始与最后的位置。反复作以下两步: (1)将j逐渐减小,并逐次比较P(j)与T,直到发现一个P(j)<T为止,将P(j)移到P(i)的位置上。 (2)将i逐渐增大,并逐次比较P(i)与T,直到发现一个P(i)>T为止,将P(i)移到P(j)的位置上。 上述两个操作交替进行,直到指针i与j指向同一个位置(即i=j)为止,此时将T移到P(i)的位置上。 算法:线性表的分割 输入:待分割的子表P(m:n)。 输出:分割后的分界线位置i。 PROCEDURE SPLIT(P,m,n,i) 选取P(k) 其中m≤k≤n T=P(k);P(k)=P(m) i=m;j=n WHILE
您可能关注的文档
- 大学数值计算方法(第6章常微分方程数值解法).ppt
- 大学化学第5章物质结构基础.ppt
- 大学机械制图cad课件及其答案5机件常用的基本表示法.ppt
- 大学物理(徐瑞珍版)课件第2章.ppt
- 大学物理化学-04章多组分系统热力学.ppt
- 大学物理第12章狭义相对论基础.ppt
- 大学化学(无机类)第4化学键与分子结构(授课讲义).ppt
- 大学物理第一章运动学(v2).ppt
- 大学物理第一部分粒子系统之第六章热力学基础.ppt
- 大学物理第三版第三章狭义相对论3.ppt
- 2026及未来5年中国电磁铁行业市场发展监测及投资战略咨询报告.docx
- 2026及未来5年中国建筑工程机械行业市场发展监测及投资战略规划报告.docx
- 2026及未来5年中国硫化镍行业市场调研分析及投资战略规划报告.docx
- 2026及未来5年中国烷化剂市场运营态势及发展前景预测报告.docx
- 2026年涤纶细旦长丝项目可行性研究报告(市场数据调查、监测研究).docx
- 2026年弓型虫抗体试剂项目可行性研究报告(市场数据调查、监测研究).docx
- 2026年拖链系统用高柔性数据传输电缆项目可行性研究报告(市场数据调查、监测研究).docx
- 2025年中国水晶圆盘市场调查研究报告.docx
- 2025年中国长网双辊挤浆机市场调查研究报告.docx
- 2026年及未来5年内中国液体氩气行业投资前景及策略咨询研究报告.docx
原创力文档

文档评论(0)