内部排序1概述2插入排序3快速排序.ppt
《内部排序1概述2插入排序3快速排序.ppt》由会员分享,可在线阅读,更多相关《内部排序1概述2插入排序3快速排序.ppt(38页珍藏版)》请在三一办公上搜索。
1、数据结构,10.1 概述,第十章 内部排序,10.2 插入排序,10.3 快速排序,10.4 选择排序,10.5 归并排序,10.6 基数排序,10.7 各种内部排序方法的比较,10.1 概述,一.排序的定义,二.排序的稳定性,在待排记录序列中,如果任意两个关键字相同的记录,用某种排序方法排序后相对位置不变,则称这种排序方法是稳定的,否则称为不稳定的。,10.1 概述,排序稳定性的应用,股票交易系统:考虑一种股票交易 1)顾客输入:股东帐号、股票代码、申购价格、数量,股票交易系统将用户申购请求插入申购队列队尾;2)股票交易系统按如下原则交易:A)申购价高者先成交 B)申购价相同者按申购时间先后
2、顺序成交,例,10.1 概述,待排记录放于地址连续的存储单元中;待排记录放于链表,记录之间的次序关系由 指针指示。待排记录存放在地址连续的存储单元中,同时另设一个指示各个记录存储位置的地址向量。,三.待排记录序列的存储方式,10.1 概述,四.顺序存储结构表示待排记录,#define MAXSIZE 20/顺序表的最大长度typedef int KeyType;/定义关键字类型为整数类型typedef struct KeyType key;/关键字项 InfoType otherinfo;/其它数据项RedType;/记录类型typedef struct RedType rMAXSIZE+1;
3、/r0闲置或用作监视哨 int length;/顺序表长度SqList;/顺序表类型,10.1 概述,10.2 插入排序,思路:,每步将一个待排序的对象,按其关键码大小,插入到前面已经排好序的一组对象的适当位置上,直到对象全部插入为止。,插入排序有多种具体实现算法:1)直接插入排序 2)希尔排序,一.直接插入排序,10.2 插入排序,思路:,将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表。,解决方法:将第1个记录看成是初始有序表,然后从第2个记录起依次插入到这个有序表中,直到将第n个记录插入。,关键问题(1)如何构造初始的有序序列?,一.直接插入排序,10.2 插入排
4、序,算法描述:for(i=2;i=L.length;+i),关键问题(2)如何查找待插入记录的插入位置?,解决方法:在i-1个记录的有序区r1 ri-1中插入记录ri,首先顺序查找ri的正确插入位置,然后将ri插入到相应位置。,一.直接插入排序,10.2 插入排序,算法描述:L.r0=L.ri;for(j=i-1;L.r0.keyL.rj.key;-j)L.rj+1=L.rj;L.rj+1=L.r0;,例,初始关键字,49 38 65 97 76 13 27 49,(),算法:,void InsertSort(SqList/插入到正确位置,void InsertSort(SqList/插入到正
5、确位置,38 49 65 76 97 13 27 49,(),j,一.直接插入排序,10.2 插入排序,算法分析,最好情况(正序),最坏情况(逆序),时间复杂度为 O(n2),二.希尔排序(缩小增量排序),若待排序记录按关键码基本有序时,直接插入 排序的效率可以大大提高;由于直接插入排序算法简单,则在待排序记录 数量n较小时效率也很高。,改进:,10.2 插入排序,二.希尔排序(缩小增量排序),先将整个待排记录序列分割成若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。,思路:,10.2 插入排序,基本有序指已接近正序:1,2,8,4,5,6,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 内部 排序 概述 插入 快速

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