排序

循环不等式:用于帮助验证算法的正确性,共有三个性质

1初始化:在循环的第一轮迭代开始前,是正确的

2保持:在循环的某一次迭代开始前是正确的,在下一次迭代前,也该正确

3终止:循环结束时,不等式给了我们一个有用的性质,有助于表明算法是正确的


算法步骤:反应出运行时间,主要占用运行时间的是各个循环,递归,其重复次数多,对于单次循环时间可令为常数c,c*n则为具体运行时间


(一)插入排序法:部分排好序--单个数插入,类似迭代(属于增量法:在排好的数组中插入,形成新数组)

插入排序法

算法的步骤为n^2,两个内嵌的for循环


(二)合并排序法:(属于分治法:类似递归)在每个递归,可分为三个步骤

1分解:将原问题分解为一系列子问题

2解决:递归的解各个子问题,若子问题够小,可直接求解

3合并:将子问题的解合并成原问题的解

合并排序法

算法步骤为nlgn:n表示数据的个数,lgn表示该数据的层数,是为2为底的对数,即递归次数


(三)冒泡法:重复交换相邻的两个反序元素

算法步骤:1+2+3.+.......n,所以数量级为n^2


案例:逆序对,若i<j时,A[i]>A[j],则(i,j)为A中的一个逆序对


子函数,求解两个有序数组间的逆序对


通过递归将一个数组不断细分,再合并


总结:通过循环不等式可判断算法是否有错,通过计算算法的运行时间可判断该算法的效率

       将求解逆序对的过程转化成排序问题,降低算法步骤

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文分析冒泡、选择、插入、希尔、快速、归并和堆排序,为不影响阅读体验,将关于时间、空间复杂度和稳定性的概念放在博文...
    DeppWang阅读 496评论 0 2
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,287评论 0 52
  • 四. 走向世界之巅——快速排序 你可能会以为归并排序是最强的算法了,其实不然。回想一下,归并的时间效率虽然高,但空...
    Leesper阅读 1,983评论 9 7
  • 本文#感悟三下乡,青春筑梦行#活动,本人承诺,文章内容为原创,且未在其他平台发表过。 在学校正式放...
    是沐子呀阅读 753评论 0 2
  • 卧牛山的野菊花 雪竹/文 看!卧牛山上的野菊花,漫山遍野,一簇簇,一团团装点着...
    xuezhu766阅读 385评论 0 0

友情链接更多精彩内容