数据结构课件-排序.ppt
《数据结构课件-排序.ppt》由会员分享,可在线阅读,更多相关《数据结构课件-排序.ppt(43页珍藏版)》请在三一办公上搜索。
1、第10章 排序一、基本概念排序:将文件中的记录按照关键字值递增或递减的顺序排列起来。排序的稳定与不稳定:若关键字相同的记录在排序后先后顺序仍然不变,则称所用的排序方法是稳定的,否则就是不稳定的。内部排序:全部在内存中进行的排序外部排序:排序中需使用内存与外存内部排序:插入排序,交换排序,选择排序,归并排序,基数排序等。,内部排序与存储结构:(1)一维数组作为存储结构:对记录进行物理重排;(2)以链表作为存储结构:无须移动记录,仅需修改指针即可;(3)建立索引表辅助排序排序算法的评价标准:(1)时间;(2)执行算法所需的附加空间;(3)算法复杂度。主要是时间代价:算法的比较次数和移动次数。注:简
2、单的排序方法,时间复杂度O(n2);先进的排序方法,时间复杂度O(nlogn);基数排序,时间复杂度O(dn)。,以数组作为文件的存储结构#define MAXSIZE 100 typedef struct KeyType key;InfoType otherinfo;RecType;typedef struct RecType rMAXSIZE+1;/r0闲置或作为哨兵单元 int length;SqList;如:以某课程考试成绩为关键字的排序,二、插入排序(Insertion Sort)定义:将待排序记录分为有序区和无序区,每次将无序区中的第一个记录按其关键字值的大小插入到有序区中的适当位
3、置,直到无序区记录全部插入为止。1 直接插入排序方法:在插入第i个记录时,R1,R2,,Ri-1已排好序,将关键字ki依次与关键字ki-1,ki-2,k1进行比较,从而找到应该插入的位置,然后将记录Ri插入。,对R1Rn进行排序,R0为监视哨,47 33 61 82 72 11 25 47 47 33 61 82 72 11 25 47 33 33 47 61 82 72 11 25 47/334733 33 47 61 82 72 11 25 4733 33 47 61 82 72 11 25 4772 33 47 61 72 82 11 25 4711 33 47 61 72 8282 2
4、5 47/1182 11 33 47 61 7272 82 25 47/117211 33 47 6161 72 82 25 47/1161 11 33 4747 61 72 82 25 47/114711 3333 47 61 72 82 25 47/113311 11 33 47 61 72 82 25 47/结束11的插入排序25 11 25 33 47 61 72 82 47/47 11 25 33 47 47 61 72 82,中间过程,算法:void InsertSort(SqList/插入到正确位置,时间复杂度O(n2),稳定,2、希尔排序(Shells method)“缩小增量
5、排序”(Diminishing Increment Sort)基本思想:先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。步骤:对整个待排记录序列,按间隔d1分组,组内排序取d2 d1(缩小增量),继续以d2为距离排序直到dn=1(同直接插入排序)为止,47 33 61 82 72 11 25 47 57 02 d=5,11 25 47 57 02 47 33 61 82 72,11 25 47 57 02 47 33 61 82 72 d=3,11 02 47 33 25 47 57 61 82 72,02 11
6、25 33 47 47 57 61 72 82 d=1,记录分组:某一趟希尔排序的增量为d,文件分为d组:(R1,Rd+1,R2d+1,),(R2,Rd+2,R2d+2,),,(Rd,R2d,R3d,)确定Ri属于哪一组?Ri必然和Ri-d*m(i-d*m0)、Ri+d*m(i+d*m=n)同组,void ShellInsert(SqList,性能分析:,逆转数:在关键字前面比此关键字大的关键字个数关键字 47 33 61 82 72 11 25 47 57 02 逆转数 0 1 0 0 1 5 5 3 3 9总逆转数=0+1+0+0+1+5+5+3+3+3+9=30d=5:11 25 47
7、57 02 47 33 61 82 72 逆转数 0 0 0 0 4 1 3 0 0 1总逆转数=0+0+0+0+4+1+3+0+0+1=9d=3:11 02 47 33 25 47 57 61 82 72 逆转数 0 1 0 1 2 0 0 0 0 1总逆转数=0+1+0+1+2+0+0+0+0+1=5,当d=1时,逆转数=0当d=1时,同直接插入,是否比直接插入快?直接插入排序,一次比较移动只减少一个逆转数希尔排序,一次比较移动减少逆转数可能147 33 61 82 72 11若中间数介于47 和11之间,必然减少逆转数,不稳定,三、选择排序(Selection Sort)基本思想:每一趟
8、在待排序的记录中选出关键字最小的记录,依次放在已排序的记录序列的最后,直至全部记录排完为止。,1.简单选择排序 第一趟排序:在无序区R1Rn中选出关键字最小的记录,将它与R1交换;第二趟排序:在无序区R2Rn中选出关键字最小的记录,将它与R2交换;第i趟排序:R1Ri-1已是有序区,在当前无序区RiRn中选出关键字最小的记录Rk,将它与Ri交换;进行n-1趟排序后,整个文件就是递增有序的。,49 38 65 97 76 13 27 49,13 38 65 97 76 49 27 49,13 27 65 97 76 49 38 49,13 27 38 97 76 49 65 49,13 27 3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课件 排序

链接地址:https://www.31ppt.com/p-5986072.html