编辑
2023-08-17
科技编程
00

首先,本文全部时笔者的个人感受,没有一些高深的算法知识。

个人感觉,算法基础实属基础,是解决后面进阶内容的铺垫。而且,算法基础也是更深入的理解计算机思维的机会

先来说说为后面进阶内容做铺垫吧。确实,这些算法在后面将会像数学的模型一样。如递归算法,在图论中就会大量的运用。如果你不知道图论是什么,没关系,你可以理解为就是一种压轴题。

另一方面来说,如果你无法理解这些内容,你也无法很好的完成后面的优化等。因为大部分的题目又是基于这些算法的。总之,这些算法是一种工具。

但是,我们也不要把这些算法想的太过于高大上,通过学习这些算法,你将更深入的理解计算机思维。

刚开始入门的时候,总觉的编程、算法就是见到一道题目,草稿纸哗啦哗啦推出一个高级的数学公式,然后一下子写个代码,就把答案算出来了。

但是当你学过过后,你就会发现,计算机根本不是这样的。

你想想,你人脑子转速有多快,一秒钟转个几圈就说“cpu 干烧了”,但是人家电脑的,cpu 转个成千上万圈都毫无压力,轻松碾压。

所以所有的算法,个人认为更像是一种枚举。

递归二分等,不就是本质上的一种枚举吗?在枚举的时候,要注意「范围」和「优化」两个点,所以递归要确定边界,二分要划定区域;而递归又要剪枝记忆化,二分本质上就是对枚举的一种优化。而像排序或者前缀和等,本质上也是枚举。他们重在剪枝,减去所有没必要的步骤,正像枚举中的「优化」

所以你看,这里所有的算法都是类似于枚举的,要执行多步的,我们编程也就是利用计算机的算力,合理优化的使用他们。

当然,这只是一种形象的比喻。这说明了在计算机中我们的算法一般情况下都是多步骤的。即是是被看作最优化的「动态规划」,也需要一个一个的根据公式从小到大计算,而并非一招致胜。这是我真正想表达的。这,或许也就是学习编程、学习计算机的一种思维。当你被困在数学的计算模式当中,就很容易无法真正的贯彻这些算法的思想,从而无法真正的学习他们。

所以,你就可以理解为什么我们要摆脱数学公式即算法的错误认识了。当然,这并不是一刀切的结论。在csp历年的考试中,第一题「打卡题」有可能是一道非常简单的数学题。但是,在大部分情况下,你都需要用到枚举,用到循环,去寻找答案。

或许,当我们经历更多的考试和高难度的题目,这个时候再回顾往事,回顾这篇文章,就会更加深刻的理解,为什么说这是一个工具了。那个时候再看我所谓的「计算机思维」,便会感觉是一种家常便饭,而并不是什么高级、稀奇古怪的东西。

或许,有些东西,就是这样的神奇。只有经历过所有的所有后,才会明白,最初的真理。


本文较为混乱,为本人对算法的一些拙见。如过有不同的意见可以在留言区留言,我会定期查看并回复的。

另,如果不是特别理解也没有关系,继续坚持学习算法,到最后的最后,蓦然回首之时,你就可能会理解我说的话了。

后会有期。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Owenzjg

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!