版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构排序第1页,课件共35页,创作于2023年2月本章主要内容排序的概念插入排序顺序插入排序折半插入排序希尔排序快速排序选择排序归并排序分配排序内部排序算法分析第2页,课件共35页,创作于2023年2月排序的概念定义将一组杂乱无章的数据按一定规律顺次排列数据表(dataList)待排序数据元素的有限集合排序码(key)通常数据元素有多个属性,作为排序依据的属性称为排序码学生成绩表,按学号小到大排序,按成绩高到低排序第3页,课件共35页,创作于2023年2月排序的概念排序的稳定性两数据元素排序码相同,排序前后两元素先后顺序若相同,则是稳定的若不同,则不稳定内排序和外排序内排序所有元素都在存在内存的排序外排序数据太多,内存放不下,而存放在外部存储器,排序时需要经常在内、外存之间读写数据1(a)2(b)2(c)3(d)1(a)2(c)2(b)3(d)2(c)1(a)3(d)2(b)初始排序1排序2稳定的不稳定第4页,课件共35页,创作于2023年2月排序的概念排序的时间开销内排序一般用数据比较次数和数据移动次数衡量外排序一般用外存的读写次数衡量(外存慢)排序的空间开销执行排序算法需要的存储空间第5页,课件共35页,创作于2023年2月顺序插入排序顺序插入排序算法将待排序元素,从后向前寻找适当的插入位置,直到所有元素都插入为止21254925*1608初始21254925*1608第1步21254925*1608第2步21254925*1608第3步212525*491608第4步16212525*4908第5步插入25,25≥21,无需移动插入49,49≥25,无需移动插入25*,25*<49,212525*491608插入16,16<49,25*,25,21,16212525*49080816212525*49插入08,08<49,25*,25,21,16,49后移,25*填入49,25*,25,21后移,16填入49,25*,25,21,16后移,08填入第6页,课件共35页,创作于2023年2月顺序插入排序算法分析最好情况(n个元素)原数据是按小到大顺序排好的每步只需与前一个数据比较一次,而不用移动数据总比较次数n-1,总移动次数0最坏情况(n个元素,i=0,1,…,n-1)原数据按大到小顺序排好的元素i需要比较i次,每比较1次移动1次,元素i移动2次总比较次数和总移动次数temp=a[i]a[0]=temp比较和移动最坏最好平均值约为n2/4时间复杂度O(n2)第7页,课件共35页,创作于2023年2月顺序插入排序算法分析是稳定的算法,key相同元素原来的顺序不会打乱需要额外一个存储空间21254925*1608初始0816212525*49排序后temp=a[i]a[0]=temp第8页,课件共35页,创作于2023年2月折半插入排序折半插入排序算法将待排序元素,按折半搜索法寻找适当的插入位置,直到所有元素都插入为止1621232525*49low>high,49,25*,25后移,23填入16212525*4923012345lowmidhigh16212525*4923012345lowmidhigh16212525*4923012345lowmidhighmid>23,high=mid-1,mid=(low+high)/2mid≤23,low=mid+1,mid=(low+high)/216212525*4923012345lowmidhighmid≤23,low=mid+1,mid=(low+high)/2第9页,课件共35页,创作于2023年2月折半插入排序算法分析平均情况下,折半搜索比顺序搜索快搜索元素i需比较log2i+1次总比较次数移动的时间复杂度O(n2)是稳定的排序算法,需额外一个存储空间比较的时间复杂度O(n*log2n)第10页,课件共35页,创作于2023年2月希尔排序基本思想设定不同gap值,距离gap的元素放一起插入排序21254925*1608初始21254925*1608第1步21254925*160821254925*1608gap=n/3+1=3
21160825*2549结果21160825*2549gap=gap/3+1=2
21160825*254908162125*2549结果08162125*254908162125*2549gap=gap/3+1=1
结果第2步第3步最后1步是n个元素进行插入排序是不是很慢?第11页,课件共35页,创作于2023年2月希尔排序算法分析设定不同gap值,距离gap的元素放一起插入排序gap值越来越小,由于前面的排序过程,使得大多数数据已经基本有序,因此希尔排序速度仍然很快gap的取值方法有很多种gap=gap/3+1gap=gap/2……希尔排序复杂度分析很困难,还没有完整的数学分析统计得出,平均比较和移动次数在[n1.25,1.6n1.25]内是不稳定的排序算法第12页,课件共35页,创作于2023年2月快速排序基本思想Partition:任取一元素x为基准(如选第1个),小于x的元素放在x左边,大于等于x的元素放在x右边对左、右部分递归执行上一步骤直至只有一个元素21254925*1608初始第1层第2层第3层选21为基准左部选08,右部选25*为基准左部选16,右部选25为基准081621254925*08162125*254908162125*2549第4层右部选49为基准08162125*2549第13页,课件共35页,创作于2023年2月快速排序Partition(low,high)初始时基准坐标p=low,x=a[low]=21从i=low+1位置开始判断,比x小的元素与p下一个位置交换,p自加1循环直至i>high,最后a[low]与a[p]交换pppipi>high,停止ia[low]与a[p]交换a[i]与a[p+1]交换,p++a[i]与a[p+1]交换,p++21254925*160821164925*250821160825*254908162125*2549第14页,课件共35页,创作于2023年2月作业:对数据a[N]进行快速排序的程序qsort(a[],0,n-1)第15页,课件共35页,创作于2023年2月快速排序性能分析快速排序是一个递归算法21081625*254908162125*2549递归树第16页,课件共35页,创作于2023年2月快速排序性能分析快速排序的趟数取决于递归树的深度若每次选取的基准可将序列划分成长度相近的左、右两部分,则下一层将对两个长度减半的序列排序设原序列有n个元素,选基准和划分所需时间为O(n)设整个快速排序所需时间为T(n),则有:T(n)≤cn+2T(n/2)//c是一个常数≤cn+2(cn/2+2T(n/4))=2cn+4T(n/4)≤2cn+4(cn/4+2T(n/8))=3cn+8T(n/8)………≤cnlog2n+nT(1)=O(nlog2n)21081625*2549第17页,课件共35页,创作于2023年2月快速排序性能分析快速排序平均计算时间为O(nlog2n)平均计算时间是所有内部排序方法中最好的递归算法每层需保存递归调用的指针和参数平均情况下最大递归层数为log2(n+1)存储开销为O(log2n)第18页,课件共35页,创作于2023年2月快速排序性能分析最坏情况单枝树,每次划分只得到比上一次少一个元素的序列比较次数递归树有n层,存储开销为O(n)快速排序是不稳定的算法21081625*2549第19页,课件共35页,创作于2023年2月快速排序改进算法快速排序对长度很小的序列排序并不比直接插入快长度取5~25时,直接插入法比快速排序法快10%改进方法1:在快速排序递归过程中,当序列长度小于一定值时,使用直接插入排序法改进方法2:在快速排序递归过程中,当序列长度小于一定值时,退出排序得到一个整体上几乎已经排好序的序列对这个几乎已经排好序的序列使用直接插入排序法第20页,课件共35页,创作于2023年2月快速排序改进算法基准元素的选取对算法性能有很大影响改进方法1:可随机选择一个元素作为基准,避免最坏情况发生改进方法2:取左端点、右端点、中点(mid=(left+right)/2)这三个元素中的中间值作为基准21254925*163508左端点右端点中点取21,25*,08三个元素中的21为基准第21页,课件共35页,创作于2023年2月选择排序直接选择排序在待排序序列中选择最小的元素xx与第一个元素对换剔除x,对剩下元素执行以上步骤21254925*1608初始08254925*1621第1步08164925*2521第2步08162125*2549第3步08162125*2549第4步08162125*2549第5步第22页,课件共35页,创作于2023年2月选择排序直接选择排序算法分析设有n个元素,第i趟比较次数为n-i-1次总比较次数为移动次数最好情况为0最坏情况为3(n-1)直接选择排序是不稳定算法第23页,课件共35页,创作于2023年2月堆排序算法思想建立最大堆循环执行以下步骤,直至所有元素出堆每次堆顶元素(即最大元素)与堆中最后一个元素交换剔除最大元素后调整为最大堆49082525*1621i=221254925*1608最后一元素的父节点i=2开始调整i=121254925*1608调整i=1i=0调整i=021254925*160849082525*162149082525*1621形成最大堆49252125*160821082525*1649第24页,课件共35页,创作于2023年2月堆排序算法思想建立最大堆循环执行以下步骤,直至所有元素出堆每次堆顶元素(即最大元素)与堆中最后一个元素交换剔除最大元素后调整为最大堆堆顶49与堆尾08交换49252125*1608212525*164908214925*0816252525*21081649虚线内调整为最大堆堆顶25与堆尾16交换虚线内调整为最大堆214916082525*25*1621082549堆顶25*与堆尾08交换虚线内调整为最大堆第25页,课件共35页,创作于2023年2月堆排序算法思想建立最大堆循环执行以下步骤,直至所有元素出堆每次堆顶元素(即最大元素)与堆中最后一个元素交换剔除最大元素后调整为最大堆491625*252121160825*2549堆顶21与堆尾08交换虚线内调整为最大堆084925*2516082125*2549堆顶16与堆尾08交换虚线内调整为最大堆2108164925*2508162125*2549虚线内调整为最大堆211608第26页,课件共35页,创作于2023年2月堆排序堆排序算法分析建立最大堆设堆中有n个元素,对应完全二叉树有k层(2k-1≤n<2k)第i层向下调整移动距离最大为(k-i),第i层节点数为2i-1总移动次数循环弹出堆顶元素执行n-1次向下调整,每次调整距离log2(n+1)总调整时间O(nlog2n)堆排序算法的计算时间复杂度为O(nlog2n)是不稳定排序第27页,课件共35页,创作于2023年2月归并排序算法思想将序列分成两个长度相等的子序列分别对两个子序列排序将排好序的两个子序列合并21254925*1608314121254925*1608314121254925*1608314121254925*1608314121254925*160831410816212525*314149212525*4908163141212525*4908163141第28页,课件共35页,创作于2023年2月归并排序算法分析计算时间包括对两个子序列分别排序时间归并的时间T(n)=cn+2T(n/2)=O(nlog2n)最好、最坏、平均时间复杂度均为O(nlog2n)是稳定排序第29页,课件共35页,创作于2023年2月桶式排序基本思想输入:在[0,1)区间内均匀分布的随机序列将区间[0,1)划分成一系列桶(等长子区间),如[0,0.1),[0.1,0.2),…,[0.9,1)对属于桶内的序列分别排序,按桶的编号依次输出0123456789.72.78.12.17.21.23.26.39.68.94.78.17.39.26.72.94.21.12.23.680123456789.78.72.17.12.26.21.23.39.68.94第30页,课件共35页,创作于2023年2月桶式排序算法分析整个桶排序时间复杂度为将元素分配到各个桶中的时间复杂度为O(n)假设每个桶中序列使用直接插入排序,时间复杂度为O(ni2)极限情况下,每个桶放一个元素,桶排序最好效率为O(n)第31页,课件共35页,创作于2023年2月基数排序多排序码排序花色:
面值:2<3<4<5<6<7<8<9<10<J<Q<K<A排成以下序列就是多排序码排序2,…,A,
2,…,A,
2,…,A,
2,…,A排序后的有序序列称为字典有序序列可先按花色排序,再按字母排序也可先按字母排序,再按花色排序第32页,课件共35页,创作于2023年2月基数排序多排序码排序最高位优先(MSD,MostSignificantDigitfirst)按第1排序码排序,会分成若干组递归对各组按第2,3,…,d排序码排序最后把所有子组元素依次连接起来形成有序序列最低位优先(LSD,LeastSignificantDigitfirst)按第d排序码(最低位)排序对上一排序结果按第d-1排序码(次低位)排序对上一排序结果按第d-2排序码排序,以此类推,直到按第1排序码完成排序,可得最终排序结果第33页,课件共35页,创作于2023年2月基数排序多排序码排
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 不同分公司劳动合同
- 变更劳动合同补充协议
- 北京技术合同登记实务
- 辽宁省兴城市2024-2025学年七年级上学期期中历史试题(含答案)
- 河南省周口市商水县2024-2025学年八年级上学期期中测试物理卷(含答案)
- 《压缩面膜》规范
- 移动护理信息系统的设计
- 存包柜相关行业投资方案范本
- 腹部视诊课件
- 防治害虫的物理防治法课件
- 家用暖通合同范本
- 电工基础知识培训课程
- 广东省2024-2025学年高三上学期10月份联考历史试卷 - 副本
- 河道水体生态修复治理施工方案
- 劳务派遣人员工作培训及管理方案
- 2024年长春二道区公益性岗位招聘133名工作人员历年高频难、易错点500题模拟试题附带答案详解
- 工会采购管理制度
- 统编版六年级语文上册《字音辨析》专项测试题带答案
- 期中试卷(1~4单元)(试题)-2024-2025学年五年级上册数学人教版
- module-5剑桥BEC商务英语-中级-课件-答案-词汇讲课教案
- 专题03立体几何中的动点问题和最值问题(原卷版+解析)
评论
0/150
提交评论