数据结构课件-第10章-内部排序答案优秀PPT.ppt
《数据结构课件-第10章-内部排序答案优秀PPT.ppt》由会员分享,可在线阅读,更多相关《数据结构课件-第10章-内部排序答案优秀PPT.ppt(53页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、10.1 排序的定义和方法 什么是“排序”?简洁说,排序是将无序的记录序列调整为有序记录序列的一种操作。例如,将下列记录序列 52,49,80,36,14,58,61,23,97,75 调整为序列 14,23,36,49,52,58,61,75,80,97 第十章第十章 内部排序内部排序一般状况下,对排序的定义为:假设含有n个记录的序列为:r1,r2,rn(10-1)它们的关键字相应为k1,k2,kn对式(10-1)的记录序列进行排序就是要确定序号1,2,n的一种排列 P1,P2,Pn使其相应的关键字满足如下的非递减(或非递增)的关系:(10-2)就是使式(10-1)的记录序列重新排列成一个按
2、关键字有序的序列 rp1,rp2,rpn (10-3)当待排序记录中的关键字(i=1,2,n)都不相同时,则任何一个记录的无序序列经排序后得到的结果是唯一;若待排序的序列中存在两个或两个以上关键字相等的记录,则排序所得到的结果不唯一。假设ki=kj(1in,1jn,ij),且在排序前的序列中,ri领先于rj(即ij)。若在排序后的序列中ri仍领先于rj,则称所用的排序方法是稳定的稳定的;反之,若可能使排序后的序列中rj领先于ri,则称所用的排序方法是不稳定的不稳定的 依据涉及的存储器不同,将排序方法分为两大类:1)内部排序:在排序进行的过程中不运用计算机外部 存储器的排序过程。2)外部排序:在
3、排序进行的过程中须要对外存进行访 问的排序过程。内部排序的方法 内部排序的过程是一个逐步扩大记录的有序序列长度的过程有序序列有序序列有序序列有序序列无序序列无序序列无序序列无序序列有序序列有序序列有序序列有序序列无序序列无序序列无序序列无序序列一趟排序 逐步扩大记录的有序序列长度排序的方法大致有一下几类:插入类、交换类、选择类、归并类、其他类将无序子序列中的一个或几个记录插入到有序序列中从而增加记录的有序子序列的长度通过交换无序序列中的记录,从而得到其中关键字最小或最大的记录,并将它加入有序子序列中,以此方法增加有序子序列的长度。从记录的无序子序列中选择关键字最小或最大的记录,并将它加入有序子
4、序列中,以此方法增加有序子序列的长度。通过归并两个或两个以上记录的有序子序列,逐步增加有序子序列的长度。按排序过程中所需的工作量来分:1)简洁的排序方法 时间困难度O(n2)2)先进的排序方法 时间困难度O(nlogn)3)基数排序 时间困难度O(dn)10.2 插入排序 插入排序的准则:在有序序列中插入新的记录以达到扩大有序区的长度的目的。有序序列有序序列有序序列有序序列R1.i-1R1.i-1无序序列无序序列无序序列无序序列Ri.nRi.n有序序列有序序列有序序列有序序列R1.iR1.i无序序列无序序列无序序列无序序列一趟插入排序的基本思想:RiRi有序序列有序序列有序序列有序序列R1.i
5、-1R1.i-1无序序列无序序列无序序列无序序列Ri.nRi.n由此实现一趟插入排序的步骤为:1)在 R1.i-1 中查找 Ri 的插入位置,即确定j(0ji)使得 R1.j.keyRi.keyRj+1.i-1.key2)将 Rj+1.i-1 中的记录后移一个位置;3)将 Ri 插入到 j+1 的位置。为了避开在查找过程中判别循环变量是否出界,设置R0为监视哨,并在查找的同时进行记录后移,如动画flash10-2-2所示。算法算法 10.1void InsertPass(SqList&L,int i)/已知已知L.r1.i-1中的记录已按关键字非递减的中的记录已按关键字非递减的依次有序排列依次
6、有序排列,/本算法实本算法实 现将现将L.ri插入其中插入其中,并保持并保持L.r1.i中记录按关键字非中记录按关键字非 /递减依次有序递减依次有序L.r0=L.ri;/复制为哨兵复制为哨兵for(j=i-1;L.r0.key L.rj.key;-j)L.rj+1=L.rj;/记录后移记录后移L.rj+1=L.r0;/插入到插入到正确位置正确位置/InsertPass具体做法不同可分为以下几种插入排序方法:具体做法不同可分为以下几种插入排序方法:干脆插入排序干脆插入排序折半插入排序折半插入排序表插入排序表插入排序希尔排序希尔排序缩小增量插入排序10.2.1 干脆插入排序干脆插入排序干脆插入排序
7、利用依次查找实现在干脆插入排序利用依次查找实现在R1.i-1中查找中查找Ri的插入位置的插入位置 算法 10.2void InsertSort(SqList&L,int i)/对依次表L进行干脆插入排序 for(i=2;i=L.length;+i)if(L.ri.key L.ri-1.key)L.r0=L.ri;/复制为哨兵 for(j=i-1;L.r0.key L.rj.key;-j)L.rj+1=L.rj;/记录后移 L.rj+1=L.r0;/插入到正确位置 /InsertSort最好的状况(关键字记录在序列中依次有序)干脆插入排序时间效率分析干脆插入排序时间效率分析实现排序的基本操作有两
8、个:实现排序的基本操作有两个:1)比较比较序列中两个关键字的大小序列中两个关键字的大小2)移动移动记录记录最坏的状况(关键字记录在序列中逆序有序)比较比较的次数的次数移动移动的次数的次数比较比较的次数的次数移动移动的次数的次数待排记录待排记录待排记录待排记录序列状态序列状态序列状态序列状态 比较比较比较比较 次数次数次数次数 移动移动移动移动 次数次数次数次数正序正序n-1n-10 0逆序逆序(n+2)(n-1(n+2)(n-1)/2/2(n+4)(n-1(n+4)(n-1)/2/2一般状况下,干脆插入排序的时间困难度为O(n2)。10.2.2 折半插入排序 由于插入排序的基本思想是在一个有序
9、序列中插入一个新的记录,则可以利用“折半查找”查询插入位置,由此得到的插入排序算法为“折半插入排序”。如动画flash10-2-3所示演示过程Void BInsertSort(SqList&L)/对依次表L进行折半插入排序for(i=2;i=L.length;+i)L.r0=L.ri;/将L.ri暂存到 L.r0 low=1;high=i-1;/折半查找插入的位置 while(low=high)m=(low+high)/2;if(L.r0.key=high+1;-j)L.rj+1=L.rj;/记录后移 L.rhigh+1=L.r0;/插入/for/BInserSort在L.r1.i-1折半查找
10、插入位置10.2.3 表插入排序表插入排序 为了削减在排序过程中进行移动记录的操作,必需变更排序过程中接受的存储结构。利用静态链表进行排序,并在排序完成之后,一次性地调整各个记录相互之间的位置,即将每个记录都调整到它们应当在的位置上 这个静态链表由存储记录的依次表和附加的指针数组构成,静态链表中的指针事实上指的是数组的下标。表插入排序分两步进行:首先构造一个有序链表(循环链表);然后依据“附加指针”的指示将结点中的记录重新排列成一个有序序列。如动画flsh10-2-4 表插入排序的过程举例k kj ji i0 01 12 23 34 45 56 67 7R1.i-1 已经形成循环链表,Ri为要
11、插入的记录,插入位置为Rj 与Rk之间,k指示为j的指针域所指示单元Ri.next=k;Rj.next=i;k kj ji iRi.next=k;Rj.next=i;关键字关键字关键字关键字2929636318183737545412124545指针指针指针指针3 34 40 01 15 52 20 01 12 23 34 45 56 67 7关键字关键字关键字关键字2929636318183737545412124545指针指针指针指针3 34 40 01 12 20 01 12 23 34 45 56 67 7k kj ji i关键字关键字关键字关键字2929636318183737545
12、412124545指针指针指针指针3 34 40 01 15 52 2完成表插入之后,调整重新排列关键字关键字关键字关键字2929636318183737545412124545指针指针指针指针6 64 40 01 17 72 23 35 50 01 12 23 34 45 56 67 7i ip pq q29294 412123 312126 6pi为止。10.2.4 希尔排序 希尔排序又称“缩小增量排序”,它的基本思想是,先对待排序列进行“宏观调整”,待序列中的记录“基本有序”时再进行干脆插入排序。例如一个含11个关键字的序列(16,25,12,30,47,11,23,36,9,18,31
13、),先对它进行“增量为5”的插入排序(r1,r6,r11)(r2,r7)(r5,r10)然后将增量“缩小到3”,(r1,r4,r7,r10)(r2,r5,r8,r11)(r3,r6,r9)之后经过最终一趟插入排序即得到有序序列希尔排序举例 之后经过最终一趟插入排序即得到有序序列(16,25,12,30,47,11,23,36,9,18,31)(11,23,12,9,18,16,25,36,30,47,31)先对它进行“增量为5”的插入排序然后将增量“缩小到3”(9,18,12,11,23,16,25,31,30,47,36)(9,11,12,16,18,23,25,30,31,36,47)过程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课件 10 内部 排序 答案 优秀 PPT
限制150内