欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    各种排序算法总结(C语言版)ppt课件.ppt

    • 资源ID:1408740       资源大小:1.18MB        全文页数:35页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    各种排序算法总结(C语言版)ppt课件.ppt

    6.1 常见的排序算法,冒泡排序 快速排序直接插入排序 希尔排序 选择排序 堆排序归并排序,6.1.1 冒泡排序,算法描述设待排序记录序列中的记录个数为n一般地,第i趟起泡排序从1到n-i+1依次比较相邻两个记录的关键字,如果发生逆序,则交换之其结果是这n-i+1个记录中,关键字最大的记录被交换到第n-i+1的位置上,最多作n-1趟。,6.1.1 冒泡排序,算法实例,21,25,25*,16,08,0 1 2 3 4 5,21,25*,49,25,16,49,chang=1,08,25*,chang=1,08,16,chang=1,25*,25,21,49,21,25,16,08,49,6.1.1 冒泡排序,算法实例,25*,0 1 2 3 4 5,i = 4,49,16,chang=1,08,25,21,25*,i = 5,49,16,chang=0,08,25,21,6.1.1 冒泡排序,算法实例,6.1.1 冒泡排序,算法实现,#include main() int a11,i,j,t; printf(Input 10 numbers:n); for(i=1;iai+1) t=ai; ai=ai+1; ai+1=t; printf(The sorted numbers:n); for(i=1;i11;i+)printf(%d ,ai);,6.1.2 快速排序,算法特点:快速排序是通过比较关键码、交换记录,以某个记录为界(该记录称为支点),将待排序列分成两部分一部分所有记录的关键码大于等于支点记录的关键码另一部分所有记录的关键码小于支点记录的关键码,6.1.2 快速排序,算法描述:任取待排序记录序列中的某个记录(例如取第一个记录)作为基准(枢),按照该记录的关键字大小,将整个记录序列划分为左右两个子序列左侧子序列中所有记录的关键字都小于或等于基准记录的关键字 右侧子序列中所有记录的关键字都大于基准记录的关键字基准记录则排在这两个子序列中间(这也是该记录最终应安放的位置)。然后分别对这两个子序列重复施行上述方法,直到所有的记录都排在相应位置上为止。基准记录也称为枢轴(或支点)记录。取序列第一个记录为枢轴记录,其关键字为Pivotkey指针low指向序列第一个记录位置指针high指向序列最后一个记录位置,6.1.2 快速排序,算法实例:,6.1.2 快速排序,算法实例:,10,6.1.2 快速排序,算法分析:快速排序是一个递归过程;利用序列第一个记录作为基准,将整个序列划分为左右两个子序列。只要是关键字小于基准记录关键字的记录都移到序列左侧;快速排序的趟数取决于递归树的高度。如果每次划分对一个记录定位后, 该记录的左侧子序列与右侧子序列的长度相同, 则下一步将是对两个长度减半的子序列进行排序, 这是最理想的情况,11,6.1.3 直接插入排序,算法描述:记录存放在数组R0.n-1中,排序过程的某一中间时刻,R被划分成两个子区间R0i-1和Ri.n-1,其中:前一个子区间是已排好序的有序区;后一个子区间则是当前未排序的部分。基本操作将当前无序区的第1个记录Ri插入到有序区R0.i-1中适当的位置,使R0i变为新的有序区,6.1.3 直接插入排序,操作细节:当插入第i(i1)个对象时, 前面的r0, r1, , ri-1已经排好序。用ri的关键字与ri-1, ri-2, 的关键字顺序进行比较(和顺序查找类似),如果小于,则将rx向后移动(插入位置后的记录向后顺移)找到插入位置即将ri插入,6.1.3 直接插入排序,实用例子:已知待序的一组记录的初始排列为:21, 25, 49, 25*, 16, 08,6.1.3 直接插入排序,实用例子:,6.1.3 直接插入排序,实用例子:,6.1.3 直接插入排序,算法实现:,void InsertSort (int r , int n ) / 假设关键字为整型,放在向量r中 int i, j, temp; for (i = 1;i0;j- -) /从后向前顺序比较,并依次后移 if ( temp rj-1 ) rj = rj-1; else break; rj = temp; ,6.1.3 直接插入排序,算法分析:关键字比较次数和记录移动次数与记录关键字的初始排列有关。最好情况下, 排序前记录已按关键字从小到大有序, 每趟只需与前面有序记录序列的最后一个记录比较1次, 移动2次记录, 总的关键字比较次数为 n-1, 记录移动次数为 2(n-1)在平均情况下的关键字比较次数和记录移动次数约为 n2/4。直接插入排序是一种稳定的排序方法直接插入排序最大的优点是简单,在记录数较少时,是比较好的办法,6.1.4 希尔排序,希尔排序又称缩小增量排序是1959年由D.L.Shell提出来的 算法描述先取定一个小于n的整数d作为第一个增量,把表的全部记录分成d组所有距离为d1的倍数的记录放在同一组中,在各组内进行直接插入排序然后取第二个增量d2d1重复上述的分组和排序,直至增量d1,即所有记录放在同一组中进行直接插入排序为止。,6.1.4 希尔排序,算法特点先取定一个小于n的整数d作为第一个增量,把表的全部记录分成d组所有距离为d1的倍数的记录放在同一组中,在各组内进行直接插入排序然后取第二个增量d2d1重复上述的分组和排序,直至增量d1,即所有记录放在同一组中进行直接插入排序为止。,6.1.4 希尔排序,运用实例先取定一个小于n的整数d作为第一个增量,把表的全部记录分成d组所有距离为d1的倍数的记录放在同一组中,在各组内进行直接插入排序然后取第二个增量d2d1重复上述的分组和排序,直至增量d1,即所有记录放在同一组中进行直接插入排序为止。,6.1.4 希尔排序,希尔排序又称缩小增量排序是1959年由D.L.Shell提出来的 算法描述首先取一个整数 gap n(待排序记录数) 作为间隔, 将全部记录分为 gap 个子序列, 所有距离为 gap 的记录放在同一个子序列中在每一个子序列中分别施行直接插入排序。然后缩小间隔 gap, 例如取 gap = gap/2重复上述的子序列划分和排序工作,直到最后取gap = 1, 将所有记录放在同一个序列中排序为止。,6.1.4 希尔排序,运用实例已知待排序的一组记录的初始排列为:21, 25, 49, 25*, 16, 08,6.1.4 希尔排序,运用实例,6.1.4 希尔排序,算法分析开始时 gap 的值较大, 子序列中的记录较少, 排序速度较快随着排序进展, gap 值逐渐变小, 子序列中记录个数逐渐变多,由于前面大多数记录已基本有序, 所以排序速度仍然很快Gap的取法有多种。 shell 提出取 gap = n/2,gap = gap/2,直到gap = 1。,6.1.5 选择排序,排序过程:首先通过n-1次比较,从n个数中找出最小的, 将它与第一个数 交换第一趟选择排序,结果最小的数被安置在第一个元素位置上再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录,将它与第二个数交换第二趟选择排序重复上述过程,共经过n-1趟排序后,排序结束,6.1.5 选择排序,排序实例:,例,初始: 49 38 65 97 76 13 27 ,i=1,13,49,一趟: 13 38 65 97 76 49 27 ,i=2,27,38,六趟: 13 27 38 49 65 76 97 ,6.1.5 选择排序,算法实例:,21,25,25*,16,08,0 1 2 3 4 5,21,25*,i = 1,49,25,16,25,16,08,49,08,25*,49,21,i = 2,i = 3,08,16,25*,25,21,初始,49,6.1.5 选择排序,算法实例:,25*,0 1 2 3 4 5,25*,25,16,08,49,25*,49,21,08,16,25,21,最小者 25*无交换,最小者 25无交换,25,21,16,08,各趟排序后的结果,6.1.5 选择排序,算法实例:,0 1 2 3 4 5,49,16,08,25*,49,21,08,25*,25,21,i =2时选择排序的过程,i k j,49,25,08,25*,16,21,i k j,49 25,25* 25,16,25,16 25,i k j,6.1.5 选择排序,算法实例:,49,25,08,25*,16,21,0 1 2 3 4 5,i k j,21 16,k 指示当前序列中最小者,6.1.5 选择排序,算法实现:,#include main() int a11,i,j,k,x; printf(Input 10 numbers:n); for(i=1;i11;i+) scanf(%d,阶段小节,几种常见的排序算法冒泡排序的特点快速排序的特点,一趟排序的子过程,本章总结,数据结构与算法初步,常见的排序算法,重点讲述冒泡排序和快速排序的特,同时大概了解直接插入排序,希尔排序和选择排序的基本思路,实验1,题目题目:实现对数组265,301,751,129,937,863,742,694,076,438进行排序,用快速排序方法来实现。并列出每趟排序的结果实验目的考察快速排序算法的基本思路 了解快速排序算法的每趟操作流程 实验分析建立一个数组,并初始化进行数据的第一趟快速排序 了解快速排序每趟操作结果,分析排序快速的最快数组类型和最慢数组类型,

    注意事项

    本文(各种排序算法总结(C语言版)ppt课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开