第4章几种常见的排序算法ppt课件.ppt

第4章几种常见的排序算法ppt课件.ppt

ID:59492257

大小:540.00 KB

页数:26页

时间:2020-09-13

第4章几种常见的排序算法ppt课件.ppt_第1页
第4章几种常见的排序算法ppt课件.ppt_第2页
第4章几种常见的排序算法ppt课件.ppt_第3页
第4章几种常见的排序算法ppt课件.ppt_第4页
第4章几种常见的排序算法ppt课件.ppt_第5页
资源描述:

《第4章几种常见的排序算法ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、讲师:朱兴林第4章几种常见的排序算法本章目标本章概述几种常见排序算法。本章目标熟悉常见的查找算法和排序算法重点能够里用函数库提供的API进行查找或排序操作难点快速排序算法本章结构数据结构与算法初步常见的排序算法常见的排序算法冒泡排序快速排序直接插入排序希尔排序选择排序堆排序归并排序冒泡排序冒泡排序方法是最简单的排序方法。这种方法的基本思想是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个“气泡”序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即“轻

2、”的元素在下面,就交换它们的位置。显然,处理一遍之后,“最轻”的元素就浮到了最高位置;处理二遍之后“次轻”的元素就浮到了次高位置。在作第二遍处理时,由于最高位置上的元素已是“最轻”元素,所以不必检查。一般地,第i遍处理时,不必检查第i高位置以上的元素,因为经过前面i-1遍的处理,它们已正确地排好序。冒泡排序是稳定的。算法时间复杂度是O(n^2)。算法描述210825492516214925251608214925251608214925251608214925251608214925251608初始关键字第一趟排序第四趟排序第二趟排序第三趟排序第五趟排序算法实例如下:输入n个数给a[

3、1]到a[n]forj=1ton-1fori=1ton-ja[i]>a[i+1]真假a[i]a[i+1]输出a[1]到a[n]算法实现#includevoidbubbling_sort(int*a,intn);intmain(){inta[5]={5,4,3,2,1};bubbling_sort(a,5);inti;for(i=0;i<5;i++){printf("%d",a[i]);}}voidbubbling_sort(int*a,intn){inti,j,temp;for(i=0;i

4、j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}}}快速排序算法描述快速排序是对冒泡排序的一种本质改进。它的基本思想是通过一趟扫描后,使得排序序列的长度能大幅度地减少。在冒泡排序中,一次扫描只能确保最大数值的数移到正确位置,而待排序序列的长度可能只减少1。快速排序通过一趟扫描,就能确保某个数(以它为基准点吧)的左边各数都比它小,右边各数都比它大。然后又用同样的方法处理它左右两边的数,直到基准点的左右只有一个元素为止。2108254925*16始关键字08254925*162108254925*1608254925*1608254925*1

5、608254925*1621pivotkey一次交换二次交换三次交换high-1完成一趟排序lowhighlowlowlowlowlowhighhighhighhighhigh算法实例254925*162108254925*162108完成一趟排序分别进行快速排序有序序列08254925*1621算法实例#includevoidquick_sort(int*a,intstart,intend);intmain(){inta[5]={4,2,6,8,1};quick_sort(a,0,4);inti;for(i=0;i<5;i++){printf("%d",a[i

6、]);}return0;}voidquick_sort(int*a,intstart,intend){inti=start,j=end;intkey=a[start];//在起始位置挖坑,等待被填while(startkey){a[end]=a[start];end--;break;}start++;}}intmid=star

7、t;a[mid]=key;if(imid+1)quick_sort(a,mid+1,j);}算法实现算法分析:快速排序是一个递归过程;利用序列第一个记录作为基准,将整个序列划分为左右两个子序列。只要是关键字小于基准记录关键字的记录都移到序列左侧;快速排序的趟数取决于递归树的高度。如果每次划分对一个记录定位后,该记录的左侧子序列与右侧子序列的长度相同,则下一步将是对两个长度减半的子序列进行排

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。