谈谈大O的学习方法

栏目:数据结构 作者:admin 日期:2018-11-22 评论:0 点击: 1,605 次

在面试的过程中,我经常会问几个关于时间复杂度的问题,但是我感觉很多人好像对此理解的不是很好。虽然有些人能回答出来,但是好像理解的并不深刻。
就我自己来说,当初学数据结构的时候,书上的介绍都能看懂,但是到底感觉理解的不够深入。后来接触的多了,慢慢就开始钻研这个知识点,我发现大O其实是数学中的一个概念,一个工具:大O符号是由德国数论学家保罗·巴赫曼(Paul Bachmann)在其1892年的著作《解析数论》首先引入的。而计算机的诞生是1946年,也就是说大O表示法比计算机出现的还早。

既然属于数学的一个工具,那么最好还是再深挖一下,把相关的知识都了解一下,这样才算学的更好。时间复杂度通过是通过几个函数来刻画的(见文末的补充资料),属于函数这个领域之下的一个侧面,不妨把函数这个领域的相关知识了解一下,这样抓住了函数这个领域的知识,自然就把大O学的更好了。这种学习方法很费事,很绕远,所以有人就觉得:大O就是一个分析复杂度的工具,其实一开始不用了解太深,不在数量级上犯错误就好了。这种想法并没有错,当然,如果有更多的空闲时间,作为一个开发者,不仅仅要有工程能力,还要有一定的数学素养,君不见:自从ai火了之后,现在很多公司招人都开始加大对数学和数据结构、算法能力的考察了。

通过大O这个知识点,挖出来的是函数领域,而函数中的分析(极限,微分)等又是数学乃至AI的中心。不仅自己深刻掌握了大O,还能学到更多的数学知识,这种方法不是更好吗?现在很多人的路,越走越窄,为什么呢?是因为开发过程变得简单了,让我们搭建工程更便捷了,但是也让我们变得目光短视,不再重视那些核心的东西,不再重视数学。现在的ai浪潮来了,越来越对数学能力提出了更高的要求,我们能否在这个浪潮中站稳脚步呢?很值得深思。

补充资料:
http://book.2cto.com/201211/8127.html

谈谈大O的学习方法:等您坐沙发呢!

发表评论