《数据结构与算法》PPT课堂课件-第6章-排序与选择.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《《数据结构与算法》PPT课堂课件-第6章-排序与选择.ppt》由会员分享,可在线阅读,更多相关《《数据结构与算法》PPT课堂课件-第6章-排序与选择.ppt(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1第6章 排序与选择排序定义将一个数据元素(或记录)的任意序列,重新排列成一个按关键字有序的序列叫排序 排序分类n按待排序记录所在位置内部排序:待排序记录存放在内存外部排序:排序过程中需对外存进行访问的排序n按排序依据原则插入排序:直接插入排序、折半插入排序、希尔排序交换排序:冒泡排序、快速排序选择排序:简单选择排序、堆排序归并排序:2-路归并排序基数排序2n按排序所需工作量简单的排序方法:T(n)=O(n)先进的排序方法:T(n)=O(nlogn)基数排序:T(n)=O(d*n)(d为位数)排序基本操作n比较两个关键字大小n将记录从一个位置移动到另一个位置3n6.1 简单排序算法 1 冒泡排
2、序n排序过程将第一个记录的关键字与第二个记录的关键字进行比较,若为逆序r1.keyr2.key,则交换;然后比较第二个记录与第三个记录;依次类推,直至第n-1个记录和第n个记录比较为止第一趟冒泡排序第一趟冒泡排序,结果关键字最大的记录被安置在最后一个记录上对前n-1个记录进行第二趟冒泡排序,结果使关键字次大的记录被安置在第n-1个记录位置重复上述过程,直到“在一趟排序过程中没有进行过交换记录的操作”为止4例:49 38 97 76 13 27 30 初始关键字38 49 76 13 27 30 97 第一趟38 49 13 27 30 76 第二趟38 13 27 30 49 第四趟13 27
3、 30 38 第五趟13 27 30 第六趟384976971397279730971376767627301349274930491338383038275n算法描述n算法评价时间复杂度最好情况(正序)Y比较次数:n-1Y移动次数:0最坏情况(逆序)Y比较次数:Y移动次数:空间复杂度:S(n)=O(1)T(n)=O(n)6n2 插入排序直接插入排序n排序过程:整个排序过程为n-1趟插入,即先将序列中第1个记录看成是一个有序子序列,然后从第2个记录开始,逐个进行插入,直至整个序列有序n算法描述7例49 38 65 97 76 13 27i=2 38 (38 49)65 97 76 13 27i
4、=3 65 (38 49 65)97 76 13 27i=4 97 (38 49 65 97)76 13 27i=5 76 (38 49 65 76 97)13 27i=6 13 (13 38 49 65 76 97)27i=1 ()i=7 (13 38 49 65 76 97)2727jjjjjj977665493827 (13 27 38 49 65 76 97)排序结果:8n算法评价时间复杂度若待排序记录按关键字从小到大排列(正序)Y关键字比较次数:Y记录移动次数:若待排序记录按关键字从大到小排列(逆序)Y关键字比较次数:Y记录移动次数:若待排序记录是随机的,取平均值Y关键字比较次数:Y
5、记录移动次数:T(n)=O(n)空间复杂度:S(n)=O(1)Ch8_1.c9折半插入排序n排序过程:用折半查找方法确定插入位置的排序叫例i=1 (30)13 70 85 39 42 6 20i=2 13 (13 30)70 85 39 42 6 20i=7 6 (6 13 30 39 42 70 85)20.i=8 20 (6 13 30 39 42 70 85)20sjmi=8 20 (6 13 30 39 42 70 85)20sjmi=8 20 (6 13 30 39 42 70 85)20sjmi=8 20 (6 13 30 39 42 70 85)20sji=8 20 (6 13
6、20 30 39 42 70 85)10n算法描述n算法评价时间复杂度:T(n)=O(n)空间复杂度:S(n)=O(1)Ch8_2.c11希尔排序(缩小增量法)n排序过程:先取一个正整数d1n,把所有相隔d1的记录放一组,组内进行直接插入排序;然后取d2d1,重复上述分组和排序操作;直至di=1,即所有记录放进一个组中排序为止12取d3=1三趟分组:13 27 48 55 4 49 38 65 97 76三趟排序:4 13 27 38 48 49 55 65 76 97例 初始:49 38 65 97 76 13 27 48 55 4一趟排序:13 27 48 55 4 49 38 65 97
7、 76二趟排序:13 4 48 38 27 49 55 65 97 76取d1=5一趟分组:49 38 65 97 76 13 27 48 55 4取d2=3二趟分组:13 27 48 55 4 49 38 65 97 7613n算法描述Ch8_3.c例49 38 65 97 76 13 27 48 55 4#define T 3int d=5,3,1;ji49133827一趟排序:13 27 48 55 4 49 38 65 97 76jiji274jiji55ji38jijiji二趟排序:13 4 48 38 27 49 55 65 97 76jiji6548ji9755ji76414n希
8、尔排序特点子序列的构成不是简单的“逐段分割”,而是将相隔某个增量的记录组成一个子序列希尔排序可提高排序速度,因为分组后n值减小,n更小,而T(n)=O(n),所以T(n)从总体上看是减小了关键字较小的记录跳跃式前移,在进行最后一趟增量为1的插入排序时,序列已基本有序增量序列取法无除1以外的公因子最后一个增量值必须为115快速排序n基本思想:通过一趟排序,将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录进行排序,以达到整个序列有序n排序过程:对rst中记录进行一趟快速排序,附设两个指针i和j,设枢轴记录rp=rs,x=rp.key初始时令i
9、=s,j=t首先从j所指位置向前搜索第一个关键字小于x的记录,并和rp交换再从i所指位置起向后搜索,找到第一个关键字大于x的记录,和rp交换重复上述两步,直至i=j为止再分别对两个子序列进行快速排序,直到每个子序列只含有一个记录为止16例初始关键字:49 38 65 97 76 13 27 50 ijxji 完成一趟排序:(27 38 13)49 (76 97 65 50)分别进行快速排序:(13)27 (38)49 (50 65)76 (97)快速排序结束:13 27 38 49 50 65 76 974927ijijij4965ji1349ij4997ij17n算法描述n算法评价时间复杂度
10、最好情况(每次总是选到中间值作枢轴)T(n)=O(nlog2n)最坏情况(每次总是选到最小或最大元素作枢轴)T(n)=O(n)空间复杂度:需栈空间以实现递归最坏情况:S(n)=O(n)一般情况:S(n)=O(log2n)T(n)=O(n)Ch8_5.c18n3 选择排序简单选择排序n排序过程首先通过n-1次关键字比较,从n个记录中找出关键字最小的记录,将它与第一个记录交换再通过n-2次比较,从剩余的n-1个记录中找出关键字次小的记录,将它与第二个记录交换重复上述操作,共进行n-1趟排序后,排序结束19例初始:49 38 65 97 76 13 27 kjjjjjjkki=11349一趟:13
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构与算法 数据结构 算法 PPT 课堂 课件 排序 选择
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内