zoukankan      html  css  js  c++  java
  • Hark的数据结构与算法练习之煎饼排序

    算法说明

    假设煎锅里边有N个煎饼摞在了一起,它们大小不一并且顺序不一致,我们需要通过拿铲子将它们不停的翻个,进行排序,最终得到一个底下是大的煎饼,上边是小的煎饼的序列。这个排序的过程就是煎饼排序。

    这个算法有两种解,一种是普通解,一种是最优解。

    普通论证:

    例如你的初始煎饼顺序是[2,4,3,1]

    然后2与4交换位置,然后4与1交换位置,得出[1,3,2,4]。

    然后3与1交换位置,接着3与2交换位置,得出[2,1,3,4]。

    最后2与1交换位置,得出结果[1,2,3,4]

    通过普通解的过程,我们能对算法做一个总结:

    我们其实每次都是两两比较煎饼,然后先将大煎饼放到最上边去,然后再把大煎饼放到最下边去。如果是n个煎饼,那么我们要进行2*n次。 不过我们注意一下。在2与1进行交换时,我们只做了一次,也就是说,当只有最后一组数字时,我们只需要排序一次就可以,所以我们有2*(n-2)+1,那么最后结果是2n-3

    当然我们这个时间复杂度只是排序的,查询的时间复杂度没有计算在内的。

    最优解论证:

    话说找到的最优解是(15/14)n≦  f(n) ≦ (5n+5)/3

    不过没有找到论证的资料,而且找到后我估计我也看不懂,所以就不来论证了,发出来记录一下,以后有能力弄懂后再回来这里补充

    总结:

    煎饼排序感觉对于我们实际应用场景来说不是很实用,就当开阔一下思路啦。

    代码

    因为要考试,所以暂时先不写,以后补上

    参考

    http://semoncat.github.io/blog/2012/11/05/pancake-sorking/

    http://blog.jobbole.com/74263/

  • 相关阅读:
    e3.tree参考手册
    fckeditor使用详解
    提示constructor无法location的原因
    无限联动下拉框使用步骤
    动态sql构建的过程
    xsqlbuilder使用说明
    处理date类型对象的方式
    wdatepicker使用指南
    How to reclaim space in InnoDB when innodb_file_per_table is ON
    Bash script: report largest InnoDB files
  • 原文地址:https://www.cnblogs.com/hark0623/p/4375176.html
Copyright © 2011-2022 走看看