【算法学习】万事皆可算

14天阅读挑战赛
努力是为了不平庸~
算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法!欢迎记录下你的那些努力时刻(算法学习知识点/算法题解/遇到的算法bug/等等),在分享的同时加深对于算法的理解,同时吸收他人的奇思妙想,一起见证技术er的成长~

1、生活中充满算法

算法在我们的生活当中,可以说随处可见。

比如华罗庚先生曾经写的一篇中学课文《统筹方法平话》中最出名的例子,莫过于“烧水泡茶”:烧水泡茶有五道工序:一、烧开水,二、洗茶壶,三、洗茶杯,四、拿茶叶,五、泡茶。假设各道工序所需的时间如下:烧开水15分钟,洗茶壶2分钟,洗茶杯1分钟,拿茶叶1分钟,泡茶1分钟。而泡茶的方法有两种。一种是先烧水,水烧开后洗刷茶具,拿茶叶,再沏茶;另一种是先烧水,烧水过程中洗刷茶具,拿茶叶,水烧开后沏茶。

如何选择最优的方案,即是我们算法需要解决的问题。

2、如何判断是否为最优的算法

例子当中,我们需要比较的是,哪种泡茶方案用时最短?

首先我们需要列出所有可能的算法:

大致有三种方案:

方案一:先烧水,水烧开后再洗茶壶、洗茶杯,拿出茶叶来泡茶;

方案二:烧水,在烧水的过程当中,洗茶壶、洗茶杯,拿出茶叶,坐等水开,泡茶;

 

方案三:洗茶壶、洗茶杯,拿出茶叶,再去烧水,坐等水开,泡茶。

3、算法分析

方案一、方案三相当于是单线程串行执行,显然不太经济,耗时较长,资源利用效率低;

方案二在烧水的同时,去做其他事情,相当于在烧水线程执行的同时,又开了一个线程去执行其他操作,提高了资源利用率,缩短了任务总的执行时间,算法更优。

4、算法不是固定的

但是这个算法也并不是固定的,倘若我们在整个任务中,增加了人手,比如拿茶叶这项任务可以交由孩子去做,那么以上方案就需要重新做出调整了,事易而备变。

再比如随着时代的发展,过去烧开一壶水需要15分钟,现在可以只需要3分钟甚至更短的时间,原先最优的算法,也许到了某一时间,不再是我们的最优选择。比如长途旅行,过去肯定会选择坐飞机,随着我们国家高铁的不断发展,长途旅行中,更多的人愿意选择高铁出行就是最好的例子。

5、学好算法

学习算法的好处,套用原文章的说法:妙不可言。

掌握了优秀的算法,可以让我们的工作事半功倍,提高资源利用率,从时间复杂度和空间复杂度两个维度,对算法进行优化。

同时也要求我们不断的学习和深入的思考:

学习新的算法思路;思考算法为什么要这么设计,思考还有没有更好的替代方案?

在算法精进的道路上,道阻且长!

加油吧,技术ers!

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=ceug2sn32fvt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我有健康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值