数据结构排序.ppt





《数据结构排序.ppt》由会员分享,可在线阅读,更多相关《数据结构排序.ppt(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构排序数据结构排序现在学习的是第1页,共35页本章主要内容本章主要内容n排序的概念排序的概念n插入排序插入排序r顺序插入排序顺序插入排序r折半插入排序折半插入排序r希尔排序希尔排序n快速排序快速排序n选择排序选择排序n归并排序归并排序n分配排序分配排序n内部排序算法分析内部排序算法分析现在学习的是第2页,共35页排序的概念排序的概念n定义定义r将一组杂乱无章的数据按一定规律顺次排列将一组杂乱无章的数据按一定规律顺次排列n数据表数据表(dataList)r待排序数据元素的有限集合待排序数据元素的有限集合n排序码排序码(key)r通常数据元素有多个属性,作为排序依据的属性称为通常数据元素有多
2、个属性,作为排序依据的属性称为排序码排序码学生成绩表,按学号小到大排序,按成绩高到低排序学生成绩表,按学号小到大排序,按成绩高到低排序现在学习的是第3页,共35页排序的概念排序的概念n排序的稳定性排序的稳定性r两数据元素排序码相同,排序前后两元素先后顺序两数据元素排序码相同,排序前后两元素先后顺序若相同,则是稳定的若相同,则是稳定的若不同,则不稳定若不同,则不稳定n内排序和外排序内排序和外排序r内排序内排序所有元素都在存在内存的排序所有元素都在存在内存的排序r外排序外排序数据太多,内存放不下,而存放在外部存储器,排序时需要经常数据太多,内存放不下,而存放在外部存储器,排序时需要经常在内、外存之
3、间读写数据在内、外存之间读写数据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页排序的概念排序的概念n排序的时间开销排序的时间开销r内排序一般用数据比较次数和数据移动次数衡量内排序一般用数据比较次数和数据移动次数衡量r外排序一般用外存的读写次数衡量外排序一般用外存的读写次数衡量(外存慢外存慢)n排序的空间开销排序的空间开销r执行排序算法需要的存储空间执行排序算法需要的存储空间现在学习的是第5页,共35页顺序插入排序顺序插入排序n顺序插入排序算法顺序插入排序算法r将待排
4、序元素,从后向前寻找适当的插入位置,直到所将待排序元素,从后向前寻找适当的插入位置,直到所有元素都插入为止有元素都插入为止212549 25*1608初始初始212549 25*1608第第1步步212549 25*1608第第2步步212549 25*1608第第3步步2125 25*491608第第4步步162125 25*4908第第5步步插入插入25,25 21,无需移动,无需移动插入插入49,49 25,无需移动,无需移动插入插入25*,25*49,2125 25*491608插入插入16,16 49,25*,25,21,162125 25*490808162125 25*49插入插
5、入08,08 high,49,25*,25后移,后移,23填入填入162125 25*4923012345lowmidhigh162125 25*4923012345low mid high162125 25*4923012345low mid highmid23,high=mid-1,mid=(low+high)/2mid23,low=mid+1,mid=(low+high)/2162125 25*4923012345lowmid highmid23,low=mid+1,mid=(low+high)/2现在学习的是第9页,共35页折半插入排序折半插入排序n算法分析算法分析r平均情况下,折半搜
6、索比顺序搜索快平均情况下,折半搜索比顺序搜索快r搜索元素搜索元素i需比较需比较 log2i +1次次r总比较次数总比较次数r移动的时间复杂度移动的时间复杂度O(n2)r是稳定的排序算法,需额外一个存储空间是稳定的排序算法,需额外一个存储空间比较的时间复杂度比较的时间复杂度O(n*log2n)现在学习的是第10页,共35页希尔排序希尔排序n基本思想基本思想r设定不同设定不同gap值,距离值,距离gap的元素放一起插入排序的元素放一起插入排序212549 25*1608初始初始212549 25*1608第第1步步212549 25*1608212549 25*1608gap=n/3+1=3 21
7、1608 25*2549结果结果211608 25*2549gap=gap/3+1=2 211608 25*2549081621 25*2549结果结果081621 25*2549081621 25*2549gap=gap/3+1=1 结果结果第第2步步第第3步步最后最后1步是步是n个元素进行插入排序个元素进行插入排序是不是很慢?是不是很慢?现在学习的是第11页,共35页希尔排序希尔排序n算法分析算法分析r设定不同设定不同gap值,距离值,距离gap的元素放一起插入排序的元素放一起插入排序gap值越来越小,由于前面的排序过程,使得大多数数据值越来越小,由于前面的排序过程,使得大多数数据已经基本
8、有序,因此希尔排序速度仍然很快已经基本有序,因此希尔排序速度仍然很快gap的取值方法有很多种的取值方法有很多种gap=gap/3+1gap=gap/2 希尔排序复杂度分析很困难,还没有完整的数学分析希尔排序复杂度分析很困难,还没有完整的数学分析统计得出,平均比较和移动次数在统计得出,平均比较和移动次数在n1.25,1.6n1.25内内是是不稳定不稳定的排序算法的排序算法现在学习的是第12页,共35页快速排序快速排序n基本思想基本思想rPartition:任取一元素:任取一元素x为基准为基准(如选第如选第1个个),小于,小于x的的元素放在元素放在x左边,大于等于左边,大于等于x的元素放在的元素放
9、在x右边右边r对左、右部分递归执行上一步骤直至只有一个元素对左、右部分递归执行上一步骤直至只有一个元素212549 25*1608初始初始第第1层层第第2层层第第3层层选选21为基准为基准左部选左部选08,右部选,右部选25*为基准为基准左部选左部选16,右部选,右部选25为基准为基准081621254925*081621 25*2549081621 25*2549第第4层层右部选右部选49为基准为基准081621 25*2549现在学习的是第13页,共35页快速排序快速排序nPartition(low,high)r初始时基准坐标初始时基准坐标p=low,x=alow=21r从从i=low+1
10、位置开始判断,比位置开始判断,比x小的元素与小的元素与p下一个位下一个位置交换,置交换,p自加自加1r循环直至循环直至i high,最后,最后alow与与ap交换交换pppipihigh,停止停止ialow与与ap交换交换ai与与ap+1交换交换,p+ai与与ap+1交换交换,p+212549 25*1608211649 25*2508211608 25*2549081621 25*2549现在学习的是第14页,共35页作业:作业:对数据对数据aN进行快速排序的程序进行快速排序的程序qsort(a,0,n-1)现在学习的是第15页,共35页快速排序快速排序n性能分析性能分析r快速排序是一个递归
11、算法快速排序是一个递归算法21081625*2549081621 25*2549递归树递归树现在学习的是第16页,共35页快速排序快速排序n性能分析性能分析r快速排序的趟数取决于递归树的深度快速排序的趟数取决于递归树的深度r若每次选取的基准可将序列划分成长度相近的左、右若每次选取的基准可将序列划分成长度相近的左、右两部分,则下一层将对两个长度减半的序列排序两部分,则下一层将对两个长度减半的序列排序设原序列有设原序列有n个元素,选基准和划分所需时间为个元素,选基准和划分所需时间为O(n)设整个快速排序所需时间为设整个快速排序所需时间为T(n),则有:,则有:T(n)cn+2T(n/2)/c 是一
12、个常数是一个常数 cn+2(cn/2+2T(n/4)=2cn+4T(n/4)2cn+4(cn/4+2T(n/8)=3cn+8T(n/8)cn log2n+nT(1)=O(nlog2n)21081625*2549现在学习的是第17页,共35页快速排序快速排序n性能分析性能分析r快速排序平均计算时间为快速排序平均计算时间为O(nlog2n)r平均计算时间是所有内部排序方法中最好的平均计算时间是所有内部排序方法中最好的r递归算法每层需保存递归调用的指针和参数递归算法每层需保存递归调用的指针和参数r平均情况下平均情况下最大递归层数为最大递归层数为 log2(n+1)存储开销为存储开销为O(log2n)
13、现在学习的是第18页,共35页快速排序快速排序n性能分析性能分析r最坏情况最坏情况单枝树,每次划分只得到比上一次少一个元素的序列单枝树,每次划分只得到比上一次少一个元素的序列比较次数比较次数递归树有递归树有n层,存储开销为层,存储开销为O(n)快速排序是不稳定的算法快速排序是不稳定的算法21081625*2549现在学习的是第19页,共35页快速排序快速排序n改进算法改进算法r快速排序对快速排序对长度很小的序列长度很小的序列排序并不比直接插入快排序并不比直接插入快r长度取长度取525时,直接插入法比快速排序法快时,直接插入法比快速排序法快10%r改进方法改进方法1:在快速排序递归过程中,当序列
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 排序

限制150内