排序问题和插入排序.ppt
《排序问题和插入排序.ppt》由会员分享,可在线阅读,更多相关《排序问题和插入排序.ppt(45页珍藏版)》请在三一办公上搜索。
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 其相应的关键字序列为 K1,K2,,Kn,这些关键字相互之间可以进行比较,即在它们之间存在着这样一个关系:Kp1Kp2Kpn,按此固有关系将上式记录序列重新排列为 Rp1,Rp2,,R
2、pn 的操作称作排序。,排序的定义,关键字(key):数据对象有多个属性域,即多个数据成员组成,其中有一个属性域可用来区分对象,作为排序依据,称为关键字。也称为排序码。,排序的定义,排序方法的稳定性:如果在对象序列中有两 个对象ri和rj,它们的排序码 ki=kj,且在排序之前,对象ri排在rj前面。如果在排序之后,对象ri仍在对象rj的前面,则称这个排序方法是稳定的,否则称这个排序方法是不稳定的。,内部排序和外部排序,由于待排序的记录数量不同,使得排序过程中涉及的存储器不同,可将排序方法分为:,1.内部排序:整个排序过程不需要访问外存便能完成。,2.外部排序:参加排序的记录数量很大,整个序列
3、的排序过程不可能在内存中完成。,内部排序方法的分类,内部排序的过程是一个逐步扩大记录的有序序列长度的过程。,有序序列区,无 序 序 列 区,有序序列区,无 序 序 列 区,内部排序方法的分类,基于不同的“扩大”有序序列长度的方法,内部排序方法大致可分下列几种类型:,1.插入排序,2.交换排序,3.选择排序,4.归并排序,5.基数排序,内部排序方法,插入排序:将无序子序列中的一个或几个记录“插入”到有序序列中,从而增加记录的有序子序列的长度。,各种排序方法的定义,交换排序:通过“交换”无序序列中的记录从而得到其中关键字最小或最大的记录,并将它加入到有序子序列中,以此方法增加记录的有序子序列的长度
4、。,选择排序:,从记录的无序子序列中“选择”关键字最小或最大的记录,并将它加入到有序子序列中,以此方法增加记录的有序子序列的长度。,各种排序方法的定义,归并排序:,通过“归并”两个或两个以上的记录有序子序列,逐步增加记录有序序列的长度。,基数排序:,是一种借助多关键字排序的思想对单逻辑关键字进行排序的方法。,各种排序方法的定义,内部排序方法的分类,#define MAXSIZE 1000/待排顺序表最大长度,typedef int KeyType;/关键字类型为整数类型,待排记录的数据类型定义如下:,typedef struct KeyType key;/关键字项 InfoType other
5、info;/其它数据项 RcdType;/记录类型,内部排序方法的分类,typedef struct RcdType rMAXSIZE+1;/r0闲置 int length;/顺序表长度 SqList;/顺序表类型,插入排序,一趟插入排序的基本思想:,有序序列R1.i-1,Ri,无序序列 Ri.n,有序序列R1.i,无序序列 Ri+1.n,插入排序,一趟插入排序的实现步骤:,3将Ri 插入(复制)到Rj+1的位置上。,2将Rj+1.i-1中的所有记录均后移 一个位置;,1在R1.i-1中查找Ri的插入位置,R1.j.key Ri.key Rj+1.i-1.key;,插入排序分类,1.直接插入排
6、序(基于顺序查找),2.折半插入排序(基于折半查找),3.希尔排序(基于逐趟缩小增量),根据不同的具体查找方法,直接插入排序,基本操作:将一个记录插入到已经排好序的有序表中。,利用“顺序查找”实现“在R1.i-1中查找Ri的插入位置”,直接插入排序,算法实现要点:,从Ri-1起向前进行顺序查找,监视哨设置在R0;,R0,j,Ri,j=i-1,插入位置,直接插入排序,算法实现要点:,R0=Ri;/设置“哨兵”,循环结束表明Ri的插入位置为 j+1,for(j=i-1;R0.keyRj.key;-j);/从后往前找,直接插入排序,对于在查找过程中找到的那些关键字不小于Ri.key的记录,并在查找的
7、同时实现记录向后移动;,for(j=i-1;R0.keyRj.key;-j)Rj+1=Rj,上述循环结束后可以直接进行“插入”,直接插入排序,void InsertionSort(SqList+i)/把第2-n的对象插入 if(L.ri.key L.ri-1.key)/InsertSort,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;/插入到正确位置,直接插入排序,38,65,97,76,13,27,49,38,65,97,76,13,27,49,38,i=1:,i=2:,49,38,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 排序 问题 插入

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