大家好,我是贤弟!
这篇文章简单聊一下算法,后面会不定期关于算法的一些想法。
一、算法很有趣
对于绝对大数人而言,算法是一个讨论的东西,每每想到算法就会头疼。因为大家会觉得算法是高深且深奥的东西,想要理解算法需要很高深的数学知识。而数学是永远不会欺骗你,会就是会,不会就是不会!
实际上,算法应该是一种很有趣的思考方式,学习新的算法就是在提高个人的认知!
这里举个简单的例子:
问:把大象放进冰箱,需要几步?
(只要是懂一点IT的人都听说过这经典的问题——把大象放进冰箱。)
答:把大象放进冰箱分三步:
第一步,打开冰箱门,
第二步,把大象放进冰箱,
第三步,关闭冰箱门。
再问:把两只大象放进冰箱,需要几步?
答:把两只大象放进冰箱,一共需要四步。
第一步,打开冰箱的门,
第二步,把第一只大象放进冰箱,
第三步,把第三只大象放进冰箱,
第四步,关闭冰箱的门。
问题的关键来了,我们是在讨论什么是算法?
其实,我们在解决”把大象放进冰箱“这个问题的过程就是算法。
所以,我认为:解决问题的方法与步骤就是算法!
有许多人认为算法是复杂与深奥的,这是因为算法的最大特要求是:优化!不断优化,不断优化,不断优化!
即:好的算法必须是高效率还特别扣门!
用人话说便是:要让马儿跑得快,还不能吃得多!
回到前面的问题:把两只大象放进冰箱,一共需要几步?
这个问题还可以用另一种方法解决,也是四步,即:
第一步,打开冰箱的门,
第二步,将两只大象捆绑在一起,
第三步,将两只大象一起放进冰箱,
第四步,关闭冰箱门。
聪明的你也许会说:两种解决方法都是四步,有什么可说的?
但问题是,如果把问题变成”把三只大象放进冰箱、把四只大象放进冰箱、把N只大象放进冰箱……“,那第二种解决方法的效率一定会高于第一种。
虽然这个例子讲得很粗糙,但这就是我们对算法的追求——优化解决问题的步骤!
如果有人站出来说”冰箱的门哪有那么大?怎么可能把放得进两只绑在一起的大象?”
WOW!!!
恭喜你,这个同学!
你发现了我们对算法追求的BUG!——即:不可能同时实现资源占用减少与效率加倍提升!
这也是我们在日常使用算法过程中必须要考虑的问题:占用大量的资源,效率会提升;减少资源的占用,效率会下降!
所谓“鱼与熊掌不能兼得!”亦如是也。
最后,扯了那么多,我们总结一下:
什么是算法?
算法本质就是解决问题的方法。
我们对算法的追求是希望优化解决问题的步骤,用更少的资源能更快解决问题。
我们不需要对算法有任何恐惧,因为我们每天在做每件事都是一种算法。
上下班走哪条路线、去菜市场买菜时,先买什么后买什么,炒菜时,先放盐还是先放油,甚至是你在玩游戏时,女朋友生气了,先哄女朋友还是打完这一局,我们遇到每一个大大小小的问题,我们所做出的任何决策都是算法。
我们对算法的优化是永无止境,因为永远有更好的算法解决曾经的问题,只要你愿意学习、思考!
领取专属 10元无门槛券
私享最新 技术干货