软件技术基础-排序.ppt
3)排序分类 按待排序记录所在位置分: 内部排序:整个排序过程都在内存中进行的排序,适用于记录文件个数不是很多的小文件。 外部排序:当排序的文件很大时,以至内存不足以存放全部记录,需借助对外存进行访问的排序,适用于记录个数太多,不能一次将其全部放入内存的大文件。 内部排序按排序所用策略分: 插入排序:直接插入排序、希尔排序 交换排序:冒泡排序、快速排序 选择排序:简单选择排序 归并排序:2-路归并排序 4)内部排序所用的存储结构: 以一维数组作为存储结构 排序过程是对记录本身进行物理重排,即通过比较和判定,把记录移动合适的位置。 以链表作为存储结构 排序过程中无须移动记录,仅需修改指针即可,通常把这类排序称为表排序。 为排序文件建立辅助表 有的排序方法难以在链表上实现,此时,若仍需要避免排序过程记录的移动,可以为文件记录一个辅助表(如索引表),这样,排序过程中只需对这个辅助的表进行物理重排,而不移动记录本身。 5)排序方法的评价: 执行算法所需要的时间 执行算法所需要的附加空间 算法本身的复杂程度 排序是一种经常使用的一种运算,其所需的附加空间量一般都不大,所以排序的时间代价是衡量排序算法好坏的最重要的标志。 6)排序的基本操作: 比较两个关键字大小 将记录从一个位置移动到另一个位置 排序的时间代价主要是指执行算法中关键字的比较和记录的移动次数,因此在下面讨论的各种排序算法时,我们将给出各算法的比较次数和移动次数。 7)本章排序方法所用的存储结构: 本章中,假设记录数组作为文件的存储结构,关键字为整数,文件类型说明如下: typedef struct /*定义记录为结构类型*/ {int key; /*关键字域*/ datatype other; /*记录的其它域*/ }rectype; rectype R[n]; /*R为记录类型的数组*/ 其中:n为文件的记录总数。 插入排序(Insertion Sort) 将待排序的一组记录分为两个区:有序区和无序区,每次将无序区中的第一个记录按其关键字值的大小插入到有序区中的适当位置,直到无序区中的全部记录都插完为止。 插入排序的分类: 直接插入排序 希尔排序 2.1直接插入排序 1)基本思想 直接插入排序是一种最简单的排序方法。具体做法是在插入第i个记录时,R1,R2,…,Ri-1 已排好序,这时将Ri的关键字ki依次与关键字ki-1,ki-2,…,k1进行比较,从而找到应该插入的位置,然后将ki插入。 2)直接插入排序实例 初始关键字 [47] 33 61 82 72 11 25 47’ i=2 (33) [33 47] 61 82 72 11 25 47’ i=3 (61) [33 47 61] 82 72 11 25 47’ i=4 (82) [33 47 61 82] 72 11 25 47’ i=5 (72) [33 47 61 72 82] 11 25 47’ i=6 (11) [11 33 47 61 72 82] 25 47’ i=7 (25) [11 25 33 47 61 72 82] 47’ i=8 (47’) [11 25 33 47 47’ 61 72 82] 3)算法设计 4)算法实现 InsertSort(R) rectype R[n+1]; // R[0]备用, R[1]~R[n]为n个待排序记录 {int i,j; for(i = 2;i = n;i++) //外层循环控制进行n-1趟排序 { R[0] = R[i]; //将待插入记录存放在监视哨中 j = i - 1; while(R[0].key R[j].key) //在当前有序区查找插入位置 { R[j+1] = R[j];j--; //将关键字大于R[j].key的记录后移 } R[j+1] = R[0]; //插入R[i] } } 5)算法说明 算法采用的是查找比较操作和记录移动操作交替进行的方法。 具体作法是将待插入记录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]插入该位置即可。 6)监视哨 算法引进了一个附加记录R
您可能关注的文档
- 课件平方根.ppt
- 课别饿坏了那匹马.ppt
- 课文《孙中山破陋习》生字.ppt
- 课文春笋.ppt
- 课文课件:荷花淀课件.ppt
- 课桌椅的设计.ppt
- 课程介绍 破冰.ppt
- 课程设计秒倒计时.doc
- 课程顾问接待技巧培训资料.doc
- 课题 制取氧气.doc
- 河北盐山中学等校2025-2026学年上学期高三一模化学试卷(含解析).docx
- 河北正定中学2025-2026学年高一上学期期末考试物理试卷(含解析).docx
- 河北张家口市怀安县2025-2026学年第一学期期末教学综合评价八年级地理试卷(含解析).docx
- 河南安阳市殷都区2025-2026学年第一学期期末教学质量检测七年级地理试卷(含解析).docx
- 河南安阳市滑县2025一2026学年第一学期期末学业质量监测八年级地理试题(含解析).docx
- 河南安阳市林州市2025-2026学年上学期期末考试高一政治试题(含解析).docx
- 河南焦作市武陟县第一中学2025-2026学年高一上学期1月月考语文试卷(含解析).docx
- 河南济源市2025-2026学年上学期期末学业质量调研七年级历史试卷(含解析).docx
- PICC导管并发症的紧急处理与护理.pptx
- 河南鹤壁市2025-2026学年高二上学期期末考试生物试题(含解析).docx
最近下载
- (109页PPT)第1单元 第1课 中华文明的起源与早期国家.pptx VIP
- 神经网络第三章感知器.ppt VIP
- 汽车发动机结构与检修 第二版 项目二 曲柄连杆机构拆装与检修.ppt VIP
- 新改版教科版六年级下册科学全册知识点总结(期末复习资料).doc VIP
- 2021中国制冷展-磁悬浮压缩技术在热泵产品中的应用探索.pdf VIP
- 苯甲苯二甲苯分离过程工艺设计说明书.pdf
- GRAVINER Mk 6 油雾探测器安装使用说明书.pdf VIP
- 屋面工程施工方案(中建,58页).docx VIP
- 游戏机租赁协议.docx VIP
- 新改版教科版六年级下册科学知识点(全册汇总).docx VIP
原创力文档

文档评论(0)