第十章排序.ppt
《第十章排序.ppt》由会员分享,可在线阅读,更多相关《第十章排序.ppt(68页珍藏版)》请在三一文库上搜索。
1、新办公地点:新办公楼(计算中心)805,第十章 内部排序,10.1 排序,设 n 个记录的序列为 R1 , R2 , R3 , . . . , Rn ,其相应的关键字序列为 K1 , K2 , K3 , . . . , Kn ,此操作过程称为排序。,排序分类 按待排序记录所在位置 内部排序:待排序记录存放在内存 外部排序:排序过程中需对外存进行访问的排序 按排序依据原则 插入排序:直接插入排序、折半插入排序、希尔排序 交换排序:冒泡排序、快速排序 选择排序:简单选择排序、堆排序 归并排序:2-路归并排序 基数排序 按排序后关键字相等的记录的相对位置 稳定排序 不稳定排序,按排序所需工作量 简单
2、的排序方法:T(n)=O(n) 先进的排序方法:T(n)=O(logn) 基数排序:T(n)=O(d.n) 排序基本操作 比较两个关键字大小 将记录从一个位置移动到另一个位置,稳定排序 与 不稳定排序,假设 Ki = Kj ,且排序前序列中 Ri 领先于 Rj ;,若在排序后的序列中 Ri 仍领先于 Rj ,则称排序方法是稳定的。,若在排序后的序列中 Rj 仍领先于 Ri ,则称排序方法是不稳定的。,例,序列 3 15 8 8 6 9,若排序后得 3 6 8 8 9 15,稳定的,若排序后得 3 6 8 8 9 15,不稳定的,内部排序 与 外部排序,内部排序: 指的是待排序记录存放在计算机随
3、机存储器中进行的排序过程。,外部排序: 指的是待排序记录的数量很大,以致内存一次不能容纳全部记录,在排序过程中尚需对外存进行访问的排序过程。,内部排序,按照排序过程中所依据的原则的不同可以分类为:,插入排序,交换排序(快速排序),选择排序,归并排序,基数排序,二叉排序树排序,10.2 插入排序,插入排序是将当前无序区中最前端的记录插入到有序区中,逐渐扩大有序区,直到所有记录都插入到有序区中为止。 直接插入排序 1)过程:在有序区中进行顺序查找以确定插入的位置,然后移动记录腾出空间,以便相应关键字的记录插入。 在有序区的前端r0中设一个监视哨,存放当前要插入的关键字。,例,序列 49 38 65
4、 97 76 13 27,初始,S = 49 ;, 38 49 ,算法描述:,初始,令第 1 个元素作为初始有序表;,依次插入第 2 , 3 , , k 个元素构造新的有序表;,直至最后一个元素;,直接插入排序算法主要应用比较和移动两种操作。,算法: InsertSort(r,n) for (i=2;i=n;i+) r0=ri; j=i-1; while (r0rj) rj+1=rj; j-; rj+1=r0; ,举例:有序列:20,6,15,7,3,过称为:,r0 r1 r2 r3 r4 r5,6 20 6 15 7 3,15 6 20 15 7 3,7 6 15 20 7 3,3 6 7
5、15 20 3, 3 6 7 15 20 ,算法评价 时间复杂度 若待排序记录按关键字从小到大排列(正序) 关键字比较次数:,记录移动次数:,若待排序记录按关键字从大到小排列(逆序) 关键字比较次数:,记录移动次数:,若待排序记录是随机的,取平均值 关键字比较次数约为:,记录移动次数约为:,T(n)=O(n),空间复杂度:S(n)=O(1),如何改进直接插入排序算法,1. 从比较次数改进: 折半插入排序,由于直接插入排序算法利用了有序表的插入操作,故顺序查找操作可以替换为折半查找操作。,例,序列 49 38 65 97 76 13 27,设已形成有序表 38 49 65 97 76 ,插入元素
6、 13,算法 BinSort(r,n) for (i=2;i=low;j-) rj+1=rj; rlow=r0; ,从移动次数上改进: 2-路插入排序,主要目的是减少排序过程中移动记录的次数。,思想:,以第一个元素为基准,将元素分为两个序列;,比第一个元素小的元素构造前序列;,比第一个元素大的元素构造后序列;,例,序列 49 38 65 97 76 13 27,以 49 为基准,算法描述,初始,取第一个元素为基准元素;,构造前序列 S1,后序列 S2 ;,与基准元素比较:,若小,插入到前序列 S1 中;,若大,插入到后序列 S2 中;,S1 + 基准元素 + S2 可得最终有序表。,例,序列
7、49 38 65 97 76 13 27,以 49 为基准, 38 , 65 , 13 27 38 + 49 + 65 76 97 ,10.2.2 希尔(shell)排序,分析直接插入排序,1. 若待排序记录序列按关键字基本有序,则排序效率可大大提高;,2. 待排序记录总数越少,排序效率越高;,希尔排序(缩小增量法) 排序过程:先取一个正整数d1n,把所有相隔d1的记录放一组,组内进行直接插入排序;然后取d2d1,重复上述分组和排序操作;直至di=1,即所有记录放进一个组中排序为止,思想:,先将待排序记录序列分割成为若干子序列分别进行直接插入排序;,待整个序列中的记录基本有序后,再全体进行一次
8、直接插入排序。,例,序列 49 38 65 97 76 13 27 48 55 4 19,第一趟排序 取d1=5,13 19 49,27 38,48 65,55 97,4 76,第二趟排序 取d1=3,13 38 55 76,4 27 49 65,19 48 97,第三趟排序 取d1=1,4 13 19 27 38 48 49 55 65 76 97,希尔排序特点 子序列的构成不是简单的“逐段分割”,而是将相隔某个增量的记录组成一个子序列 希尔排序可提高排序速度,因为 分组后n值减小,n更小,而T(n)=O(n),所以T(n)从总体上看是减小了 关键字较小的记录跳跃式前移,在进行最后一趟增量为
9、1的插入排序时,序列已基本有序 增量序列取法 无除1以外的公因子 最后一个增量值必须为1,10.3 交换排序,10.3.1 冒泡排序,思想: 通过不断比较相邻元素大小,进行交换来实现排序。 第一趟排序: 首先将第一个元素与第二个元素比较大小,若为逆序,则交换; 然后比较第二个元素与第三个元素的大小,若为逆序,则交换;,. . .,直至比较第 n-1 个元素与第 n 个元素的大小,若为逆序,则交换; 结果:关键字最大的记录被交换至最后一个元素位置上。,对前n-1个记录进行第二趟冒泡排序,结果使关键字次大的记录被安置在第n-1个记录位置 重复上述过程,直到“在一趟排序过程中没有进行过交换记录的操作
10、”为止,例,序列 49 38 76 13 27,38 49 13 27,初始,第一趟排序后,最大值,次大值,第二趟排序后,38 13 27,13 27,第三趟排序后,第四趟排序后,算法: BubbSort(r,n) f=n; while (f0) k=f-1; f=0; for (j=1;jrj+1) t=rj; rj=rj+1; rj+1=t; f-; ,算法也可写成: BubbSort(r,n) for (i=0;irj) t=ri; ri=rj; rj=t; ,算法评价 时间复杂度 最好情况(正序) 比较次数:n-1 移动次数:0 最坏情况(逆序) 比较次数:,移动次数:,空间复杂度:S
11、(n)=O(1),T(n)=O(n), 10.3.2 快速排序 1)基本思想:快速排序是对冒泡排序的一种改进。通过一趟排序将一个无序区分割成两个独立的无序子区,其中前一部分子区中所有元素关键字均不大于后一部分子区中元素关键字,然后对每一子区再进行分割,直到整个序列有序为止。 2)分割过程: 选取表中一个元素rk(一般选取第一个元素),令x=rk,称为控制关键字, 用控制关键字和无序区中其余元素关键字进行比较。 设置两个指示器i,j,分别表示线性表第一个和最后一个元素位置。, 将j逐渐减小,逐次比较rj与x,直到出现一个rjx,然后将ri移到rj 位置。如此反复进行,直到i=j为止,最后将x移到
12、rj位置,完成一趟排序。此时以x为界分割成两个子区。,举例:设序列为46,55,13,42,94,5,17,70,算法: QkSort(r,low,hig) x=rlow; i=low; j=hig; while (i=x) j-; t=ri; ri=rj; rj=t; while (ij ,算法评价 时间复杂度 最好情况(每次总是选到中间值作枢轴)T(n)=O(nlog2n) 最坏情况(每次总是选到最小或最大元素作枢轴)T(n)=O(n),空间复杂度:需栈空间以实现递归 最坏情况:S(n)=O(n) 一般情况:S(n)=O(log2n),T(n)=O(n),10.4 选择排序,思想: 每一趟
13、都选出一个最大或最小的元素,并放在合适的位置。,简单选择排序,树形选择排序,堆排序,10.4.1 简单选择排序,思想:,第 1 趟选择:,从 1n 个记录中选择关键字最小的记录,并和第 1 个记录交换。,第 2 趟选择:,从 2n 个记录中选择关键字最小的记录,并和第 2 个记录交换。,第n-1趟选择:,从 n-1n 个记录中选择关键字最小的记录,并和第 n-1 个记录交换。,. . .,举例:设有序列: 5,4,12,20,27,3,1 ,排序过称为:,结果: 1,3,4,5,12,20,27 ,算法 SelSort(r,n) for (i=0;in-1;i+) j=i; for (k=i+
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十 排序
链接地址:https://www.31doc.com/p-3131140.html