- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数10-排序a
第十章 内排序 10.1 概述 1.排序----将文件或表中的记录,通过某种方法整理成按关 键字大小次序排列的处理过程。 假定n个记录的文件为 (R1,R2,...,Rn) 对应的关键字为 (K1,K2,...,Kn) 则排序是确定如下一个排列 p1,p2,...,pn 使得 Kp1≤Kp2≤...≤ Kpn 从而得到一个有序文件 (Rp1,Rp2,...Rpn) 学生成绩表 2.什么是排序的稳定性 假设在待排序的文件中,存在两个具有相同关键字的记 录R(i)与R(j),其中R(i)位于R(j)之前。在用某种排序法排序 之后,R(i)仍位于R(j)之前,则称这种排序方法是稳定的;否 则,称这种排序方法是不稳定的。 例 数列 (10,25,22,42,25,30,18) (10,18,22,25,25,30,42) (10,25,22,42,25,30,18) (10,18,22,25,25,30,42) 3.内部排序(内排序)----在计算机内存中进行的排序 外部排序(外排序)----借助计算机外存进行的排序 4.待排序的记录和顺序表(文件)的数据类型 #define MAXSIZE 20 //最大长度 typedef int KeyType; //关键字类型 typedef struct //记录类型 { KeyType key; //关键字 InfoType otherinfo; //其它数据类型 }RecType; //记录类型名 typedef struct { RecType r[MAXSIZE+1];//r[0]用作监视哨 int length; //实际表长length≤MAXSIZE }SeqList; //表和表长合并为SeqList 或: //表和表长分别定义和说明 RecType r[MAXSIZE+1]; //r[0]用作监视哨 int length; //实际表长length≤MAXSIZE 5.排序算法分析 (1)时间复杂度 ● 对n个记录排序,所需比较关键字的次数; 最好情况;最坏情况;平均情况 ● 对n个记录排序,所需移动记录的次数; 最好情况;最坏情况;平均情况 (2)空间复杂度 排序过程中,除文件中的记录所占的空间外, 所需的辅助存储空间的大小。 6.内排序方法 (1)对顺序表的排序 ● 插入排序:直接插入排序; 折半插入排序;2-路插入排序;表插入排序; 希尔(Shell)排序; ● 选择排序:简单选择/选择排序; 树形选择排序;堆排序 ● 归并排序 2-路归并排序 k-路归并排序 ● 交换排序 冒泡排序:单向冒泡排序,双向冒泡排序 快速排序 ● 基数排序 多关键字排序 最高位优先法 最低位优先法 链式基数排序 (2)对单链表的排序 直接插入,简单选择,冒泡排序,基数排序 10.2 插入排序 算法基本思想 将待排序的记录插入到已排序的子文件中去,使得插入之后 得到的子文件仍然是有序子文件。插入一个记录,首先要对有序 子文件进行查找,以确定这个记录的插入位置。按查找方式的不 同,插入排序又可以分为线性插入排序和折半插入排序,前者使 用顺序查找,后者使用折半查找。 1.直接插入排序(线性插入排序) 设待排序的文件为(r[1],r[2],...,r[n]) 关键
文档评论(0)