内部排序4选择排序5归并排序6基数排序.ppt
《内部排序4选择排序5归并排序6基数排序.ppt》由会员分享,可在线阅读,更多相关《内部排序4选择排序5归并排序6基数排序.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构 10.1 概述概述第十章第十章 内部排序内部排序 10.2 插入排序插入排序 10.3 快速排序快速排序 10.4 选择排序选择排序 10.5 归并排序归并排序 10.6 基数排序基数排序 10.7 各种内部排序方法的比较各种内部排序方法的比较基本思想:基本思想:每一趟在每一趟在n-i+1(i=1,2,n)个记录中选取关键个记录中选取关键字最小的记录作为有序序列中的第字最小的记录作为有序序列中的第i个记录。个记录。10.4 选择排序选择排序有序序列有序序列r r1r r2r ri-1r rir rnr rk无序序列无序序列r rnr ri+1r r1r r2r ri-1r rir r
2、i交换交换最小记录最小记录u简单选择排序简单选择排序u树形选择排序树形选择排序u堆排序堆排序思路:思路:一一.简单选择排序简单选择排序 10.4 选择排序选择排序 每次经每次经 n-i 次比较,从次比较,从 n-i+1个记录中选出个记录中选出第第 i 小的记录,并与第小的记录,并与第 i 位置记录交换。位置记录交换。初始关键字初始关键字49 38 65 97 76 13 27 49i=1i=113 38 65 97 76 49 27 49例例i=2i=213 27 65 97 76 49 38 49i=3i=313 27 38 97 76 49 65 49i=4i=413 27 38 49 7
3、6 97 65 49i=5i=513 27 38 49 49 97 65 76i=6i=613 27 38 49 49 65 97 76i=7i=713 27 38 49 49 65 76 97 每次经每次经 n-i 次比较,从次比较,从 n-i+1个记录中选出个记录中选出第第 i 小的记录,并与第小的记录,并与第 i 位置记录交换。位置记录交换。思路:思路:10.4 选择排序选择排序解决方法:解决方法:设置一个整型变量设置一个整型变量index,用于记录在一趟比较的,用于记录在一趟比较的过程中关键码最小的记录位置。过程中关键码最小的记录位置。212128282525161649490808i
4、ndexindex index0808 10.4 选择排序选择排序212128282525161649490808indexindex0808算法描述:算法描述:index=i;for(j=i+1;j=L.length;j+)if(L.(L.rj.keyL.rindex.key)index=j;解决方法:解决方法:第第i趟简单选择排序的待排序区间是趟简单选择排序的待排序区间是ri rn,则,则ri是无序区第一个记录,所以,将是无序区第一个记录,所以,将index所记载的关所记载的关键码最小的记录与键码最小的记录与ri交换。交换。算法描述:算法描述:if(index!=i)L.riL.rinde
5、x;10.4 选择排序选择排序void SelectSort(SqList&L)for(i=1;iL.length;+i)index=i;for(j=i+1;j=L.length;j+)if(L.rj.keyL.rindex.key)index=j;/在在r i.L.length中选择中选择key最小的记录最小的记录 if(index!=i)L.ri L.rindex;/与第与第 i 记录交换记录交换 算法:算法:特点:特点:1)1)时间复杂度为时间复杂度为O(nO(n2 2)2)2)算法稳定算法稳定 改进的着眼点:改进的着眼点:如何如何减少减少关键码间的关键码间的比较比较次数。次数。若能利用
6、每趟比较后的结果,也就是在找出键值最若能利用每趟比较后的结果,也就是在找出键值最小记录的同时,也找出键值较小的记录,则可减少小记录的同时,也找出键值较小的记录,则可减少后面的选择中所用的比较次数,从而提高整个排序后面的选择中所用的比较次数,从而提高整个排序过程的效率。过程的效率。减少关键码间的比较次数减少关键码间的比较次数查找最小值的同时,找出较小值查找最小值的同时,找出较小值 10.4 选择排序选择排序ZHAOCHALIUBAODIAOYANGXUEWANGCHABAODIAOWANGBAODIAOBAO锦标赛过程示意图锦标赛过程示意图冠军冠军1234567ZHAOCHALIUBAODIAO
7、YANGXUEWANGCHALIUDIAOWANGCHADIAOCHA锦标赛过程示意图锦标赛过程示意图亚军亚军89ZHAOCHALIUBAODIAOYANGXUEWANGZHAOLIUDIAOWANGLIUDIAODIAO锦标赛过程示意图锦标赛过程示意图季军季军1011思路:思路:二二.树型选择排序树型选择排序 10.4 选择排序选择排序 以初始序列作为完全二叉树的叶子结点,从最后以初始序列作为完全二叉树的叶子结点,从最后的分支结点开始,选左右孩子中较小的的分支结点开始,选左右孩子中较小的(胜者胜者)为其双为其双亲的值,亲的值,相等则取左孩子,直至选出树根,得到最小相等则取左孩子,直至选出树根
8、,得到最小元素;元素;然后将此时根对应的叶子结点关键字值改为然后将此时根对应的叶子结点关键字值改为 最最大值大值,从该叶子起与兄弟比,较小的作为新的双亲,从该叶子起与兄弟比,较小的作为新的双亲,直至根,得到次小值直至根,得到次小值,依次可选出其余元素。,依次可选出其余元素。1313 4949 3838 3838 3838 6565 6565 9797 7676 131313131313 2727 2727 4949例:例:49 38 65 97 76 13 27 49 38 65 97 76 13 27 4949二二.树型选择排序树型选择排序 10.4 选择排序选择排序 以初始序列作为完全二叉
9、树的以初始序列作为完全二叉树的叶子结点,从最后的分支结点开始,叶子结点,从最后的分支结点开始,选左右孩子中较小的选左右孩子中较小的(胜者胜者)为其双为其双亲的值,亲的值,相等则取左孩子,直至选相等则取左孩子,直至选出树根,得到最小元素;出树根,得到最小元素;2727 4949 3838 3838 3838 6565 6565 9797 7676 2727 7676 2727 2727 4949二二.树型选择排序树型选择排序 10.4 选择排序选择排序例:例:49 38 65 97 76 13 27 49 38 65 97 76 13 27 49491313 49 49 38 38 3838 3
10、838 6565 65 65 97 977676131313131313 2727 27 27 4949然后将此时根对应的叶子结点关键字然后将此时根对应的叶子结点关键字值改为值改为 最大值最大值,从该叶子起与兄弟比,从该叶子起与兄弟比,较小的作为新的双亲,直至根,得到较小的作为新的双亲,直至根,得到次小值次小值,依次可选出其余元素。,依次可选出其余元素。缺点缺点:需增加额外空间来:需增加额外空间来存放中间比较结果和排序存放中间比较结果和排序结果,且算法实现困难。结果,且算法实现困难。三三.堆排序堆排序 堆的概念:堆的概念:堆堆是满足下列性质的数列是满足下列性质的数列k1,k2,kn:kik2i
11、kik2i+1kik2ikik2i+1或或 若上述数列是若上述数列是堆堆,则,则k1必是数列中的最小值或最大必是数列中的最小值或最大值,则称分别满足上式的序列为值,则称分别满足上式的序列为小顶堆小顶堆或或大顶堆大顶堆。完全二叉树中所有非终端结点的值均不大于(或完全二叉树中所有非终端结点的值均不大于(或不小于)其左右孩子的结点的值。不小于)其左右孩子的结点的值。10.4 选择排序选择排序如如堆堆9696,8383,2727,3838,1111,0909堆堆1212,3636,2424,8585,4747,3030,5353,9191968327381109大顶堆大顶堆12362447855330
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 内部 排序 选择 归并 基数排序
限制150内