- 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章 内部排序
姿阀宿漾赵您覆窄宋担痪菠果豌蹭否祷嘘澜恃藐柄鲁晨隧贫昂七蜡彦斋拥ch10_内部排序ch10_内部排序
1 概述
2 插入排序(直接插入排序、希尔排序)
3直接选择排序
4交换排序(起泡排序、快速排序)
5归并排序
6内部排序方法的比较
习题
巨绪景唐雄叛韩牵移狈尔洋摊竞蛮敲语庆勘盅窗榔庭拷祈乙齿财绪反鲜振ch10_内部排序ch10_内部排序
1 概述
基本概念
定义:将文件中的数据记录按关键字值的递增或递减的顺序排列起来。 {R1, R2,..., Rn}? {Ri1, Ri2,..., Rin}
其中关键字{k1, k2,..., kn}? 有序序列{ki1, ki2,..., kin}
排序方法的稳定性:
对于ki=kj的记录Ri=Rj( Ri在Rj之前),
排序后: Ri仍在Rj之前,则排序方法是稳定的; Ri在Rj之后, 则排序方法是不稳定的;
卑仁烹赦列叠潘滇桅梯厂桓尾姿足娃拐菊历祥钒匙魔伊涎伶徒晰用柿席提ch10_内部排序ch10_内部排序
基本概念
方法分类:
内部排序:在内存中进行,适于小文件
外部排序:使用内存和外存,适于大文件,内存不够用
内部排序:文件可有三种存储结构
(1)一维数组:对记录的物理位置重排
(2)链表:修改指针
(3)索引表:对索引进行物理重排,记录位置不动(由于不方便移动等原因)
本章仅考虑:记录数组R[n],关键字key为整数
标准: 执行时间(最重要的标志),所需空间,算法复杂度
排序的时间代价主要指:算法中关键字的比较次数和记录的 移动次数
衔锡匙喉圾馒邹毋驾颂件曾锨圣簧驻僚孝简撼很蚂扬殖鳃隘鹿侩骑粪源硼ch10_内部排序ch10_内部排序
以记录数组作为文件的存储结构,关键字为整数,文件类型说明如下:
typedef struct /* 定义记录为结构类型 */
{ int key; /* 关键字域 */
datatype other; /* 记录的其他域 */
} rectype;
rectype R[n]; /* R为记录类型的数组 */
其中:n为文件的记录总数。
智觅渝浪啃羔奴锄挛晾李潜阿绿守互促焉铰剪浦矽测顾胃干铣镰芯求基详ch10_内部排序ch10_内部排序
2 插入排序
将记录分为有序区和无序区,每次将无序区的第一个记录插入到有序区的适当位置,使之保持有序。
2.1 直接插入排序(最简单)
具体做法:
把第i个记录Ri插入到有序区{R1, R2, …, Ri-1};将关键字ki依次与关键字ki-1, ki-2, …, k1进行比较,从而找到应该插入的位置,然后将ki插入。
赴区狠醛酚橡草淳巍躺抉忽躲趣紊融淆王淳帆森狗蕾潮坊椿沽缆赃握敝界ch10_内部排序ch10_内部排序
假设R[1]~R[n]为待排序的记录区,下面给出算法描述:
INSERTSORT(rectype R[]) // 对数组R按递增序进行插入排序
// R[0]是监视哨 */
{int i, j;
for (i=2; i=n; i++) /* 依次插入R[2], …, R[n] */
{ R[0]=R[i];
j=i?1;
while (R[0].keyR[j].key) /* 查找R[i]的插入位置 */
{R[j+1]=R[j]; j--;} // 将关键字大于R[i].key的记录后移
R[j+1]=R[0]; /* 插入R[i] */
}
} /* INSERTSORT */
瞻宝远匪匈戏娶弥墒椅伎渴泼咨袍敞邢几泞蝴侈萝票汪烦召甜临馅谜规源ch10_内部排序ch10_内部排序
算法采用的是查找比较操作和记录移动操作交替进行的方法
具体做法是:
将待插入记录R[i]的关键字依次与有序区中记录R[j](j=i?1, i?2, …, 1)的关键字进行比较,若R[j]的关键字大于R[i]的关键字,则将R[j]后移一个位置;若R[j]的关键字小于或等于R[i]的关键字,则查找过程结束,j+1即为R[i]的插入位置。因为关键字比R[i]大的记录均已后移,故只要将R[i]插入该位置即可。
附加记录R[0],其作用有两个:
进入查找循环之前,它保存了R[i]的副本,使得不致于因记录的后移而丢
您可能关注的文档
最近下载
- 必修下教材文言文逐篇过关挖空训练(二)(解析版)-2026年高考语文一轮复习之古诗文(全国通用).pdf VIP
- 必修下教材文言文逐篇过关挖空训练(一)(解析版)-2026年高考语文一轮复习之古诗文(全国通用).pdf VIP
- 天健笔试押题校招.pdf VIP
- XXX电商公司人才盘点方案.ppt VIP
- 学堂在线《《走进心理学》期末考试复习题及答案》作业单元考核答案.docx VIP
- 天健杭州校招面试题目及答案.doc VIP
- YST 848-2012 铸轧铝及铝合金线坯.docx VIP
- 2024-2025学年江苏省苏州市震川、昆山市一中、常熟中学、西交大附中四校高一上学期10月联考数学试题(含答案).pdf VIP
- 必修下教材文言文逐篇过关挖空训练(一)(原卷版)-2026年高考语文一轮复习之古诗文(全国通用).pdf VIP
- 天健校招笔试题库.pdf VIP
文档评论(0)