博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hark的数据结构与算法练习之煎饼排序
阅读量:6677 次
发布时间:2019-06-25

本文共 607 字,大约阅读时间需要 2 分钟。

算法说明

假设煎锅里边有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://ivyao.baihongyu.com/

你可能感兴趣的文章
Docker for Windows 里的Shared Drives 设置不生效
查看>>
Mark Text 支持斗图的 markdown 编辑器
查看>>
Beten交易所与市场投资者共同发掘数字资产价值
查看>>
VUE简单的定时器实时刷新
查看>>
CSS学习--布局
查看>>
408之组成原理1:计算机发展历程
查看>>
OkHTTP、Retrofit 中文乱码解决方法
查看>>
web-http协议
查看>>
笔记-runtime源码解析之让你彻底了解底层源码
查看>>
iOS 动画四:transform 动画
查看>>
如何用cmake编译
查看>>
爬取需要登录的网站
查看>>
dubbo项目实战
查看>>
阳江a货翡翠,晋中a货翡翠
查看>>
关于JVM 内存的 N 个高频面试问题!
查看>>
springCloud Spring Boot mybatis分布式微服务云架构-docker-feign-hystrix-ribbon(七)
查看>>
perl + fastcgi + nginx搭建
查看>>
WIN 7 显示桌面
查看>>
12 . 英语邮件中处理问题和表达合作 (13句)
查看>>
《提问的智慧》
查看>>