- 1、本文档共96页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
金良兵
lbjin@zjnu.cn
浙江师范大学; 在信息处理过程中,最基本的操作是查找。从查找来说,效率最高的是折半查找,折半查找的前提是所有的数据元素(记录)是按关键字有序的。需要将一个无序的数据文件转变为一个有序的数据文件。
将任一文件中的记录通过某种方法整理成为按(记录)关键字有序排列的处理过程称为排序。
排序是数据处理中一种最常用的操作。;⑴ 排序(Sorting)
排序是将一批(组)任意次序的记录重新排列成按关键字有序的记录序列的过程,其定义为:
给定一组记录序列:{R1 , R2 ,…, Rn},其相应的关键字序列是{K1 , K2 ,…, Kn} 。确定1, 2, … n的一个排列p1 , p2 ,…, pn,使其相应的关键字满足如下非递减(或非递增)关系: Kp1≤Kp2 ≤…≤Kpn的序列{Kp1 ,Kp2 , …,Kpn} ,这种操作称为排序。
关键字Ki可以是记录Ri的主关键字,也可以是次关键字或若干数据项的组合。
若Ki是主关键字,排序后得到的结果是唯一的;否则不唯一;⑵ 排序的稳定性
若记录序列中有两个或两个以上关键字相等的记录: Ki =Kj(i≠j,i, j=1, 2, … n),且在排序前Ri先于Rj(ij),排序后的记录序列仍然是Ri先于Rj,称排序方法是稳定的,否则是不稳定的。
排序算法有许多,但就全面性能而言,还没有一种公认为最好的。每种算法都有其优点和缺点,分别适合不同的数据量和硬件配置。
评价排序算法的标准有:执行时间和所需的辅助空间,其次是算法的稳定性。; 若排序算法所需的辅助空间不依赖问题的规模n,
即空间复杂度是O(1) ,则称排序方法是就地排序,
否则是非就地排序。
⑶ 排序的分类
待排序的记录数量不同,排序过程中涉及的存储器的不同,有不同的排序分类。
① 待排序的记录数不太多:所有的记录都能存放在内存中进行排序,称为内部排序;
② 待排序的记录数太多:所有的记录不可能存放在内存中, 排序过程中必须在内、外存之间进行数据交换,这样的排序称为外部排序。;⑷ 内部排序的基本操作
对内部排序地而言,其基本操作有两种:
◆ 比较两个关键字的大小;
◆ 存储位置的移动:从一个位置移到另一个位置。
第一种操作是必不可少的;而第二种操作却不是必须的,取决于记录的以下三种存储方式:
① 记录存储在一组连续地址的存储空间:记录之间的逻辑顺序关系是通过其物理存储位置的相邻来体现,记录的移动是必不可少的;
② 记录采用链式存储方式:记录之间的逻辑顺序关系是通过结点中的指针来体现,排序过程仅需修改结点的指针,而不需要移动记录; (链表排序);③ 记录存储在一组连续地址的存储空间:构造另一个辅助表来保存各个记录的存放地址(指针) :排序过程不需要移动记录,而仅需修改辅助表中的指针,排序后视具体情况决定是否调整记录的存储位置。 (地址排序)
①比较适合记录数较少的情况;而②、③则适合记录数较多的情况。
为讨论方便,假设待排序的记录是以①的情况存储,且设排序是按升序排列的;关键字是一些可直接用比较运算符进行比较的类型。;待排序的记录类型的定义如下:
#define MAX_SIZE 100
Typedef int KeyType ;
typedef struct RecType
{ KeyType key ; /* 关键字码 */
infoType otherinfo ; /* 其他域 */
}RecType ;
typedef struct SqList
{ RecType R[MAX_SIZE+1] ; //R[0]闲置或作哨兵单元
int length ;
}SqList ;; 插入排序以 “玩桥牌者”的方法为基础。即在考察记录Ri之前,设以前的所有记录R1, R2 ,…., Ri-1已排好序,然后将Ri插入到已排好序的诸记录的适当位置。
最基本的插入排序是直接插入排序(Straight Insertion Sort) 。;1 排序思想
将待排序的记录Ri,插入到已排好序的记录表R1, R2 ,…., Ri-1中,得到一个新的、记录数增加1的有序表。 直到所有的记录都插入完为止。
设待排序的记录顺序存放在数组R[1…n]中,在排序的某一时刻,将记录序列分成两部分:
◆ R[1…i-1]:已排好序的有序部分;
◆ R[i…n]:未排好序的无序部分。
显然,在刚开始
您可能关注的文档
- 共享与一线四季度视频会议讲义.pptx
- DDF发动机的未来探析.ppt
- 2015最新优质课用对立统一的观点看问题探析.ppt
- DCS子系统探析.ppt
- 共享中心业务讲义.ppt
- 韩国骨源肽讲义.ppt
- 2015最新消防培训课件探析.ppt
- 共源共栅放大器讲义.ppt
- 仿制药质量一致性评价工作讲义.ppt
- 2015最新SEO搜索引擎优化(新手必看)探析.ppt
- 2025年中山市沙溪镇人民政府所属事业单位招聘11人笔试备考题库及参考答案详解一套.docx
- 2025年中山市横栏镇人民政府所属事业单位第二期招聘笔试高频难、易错点备考题库及参考答案详解一套.docx
- 2025年中山市横栏镇人民政府所属事业单位第二期招聘笔试高频难、易错点备考题库含答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库及完整答案详解1套.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库参考答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试高频难、易错点备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库附答案详解.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库及答案详解一套.docx
- 2025年中山市阜沙镇人民政府所属事业单位招聘笔试备考题库及完整答案详解1套.docx
文档评论(0)