又有点像是自带了划重点功能。
时间一分一秒地过去。
陈林就这样看着自己的手,每隔一段时间就会自动翻过一页。
翻页的速度,比他平时看书快得多。
而整个第一章,总共只有二十多页。
花了不到二十分钟。
系统操纵着他的眼睛,就把整个第一章的内容全部扫完了。
当最后一页被翻过去的时候,陈林的手自动停了下来。
紧接着,书页开始往回翻。
第二章的标题出现在眼前——
【第二章算法分析】
新的一章开始了。
但陈林此刻的注意力,却不在书上。
他在回想。
回想刚才第一章的内容。
“数据结构是计算机存储、组织数据的方式......“
“算法是解决特定问题的步骤和方法......“
“时间复杂度和空间复杂度是衡量算法效率的两个重要指标......“
“大O表示法用于描述算法的最坏情况时间复杂度......“
一个个概念,一段段定义,清晰地浮现在他的脑海中。
不是那种死记硬背的、需要反复默念才能记住的东西。
而是一种怎么说呢?
就像是自己已经融会贯通的知识一样。
信手拈来,毫不费力。
“卧槽......“
陈林在心里发出了一声惊叹。
这个【自动学习】功能......
有点东西啊!
他平时看这种教材类的书籍,半个小时能看完一章就已经是极限了。
而且看完之后,能记住的东西最多也就百分之六七十。
剩下的那些,需要反复回顾、做笔记、甚至动手实践,才能真正掌握。
但现在——
二十分钟,看完一章。
而且看完就会。
直接省去了复习、巩固、实践的过程。
这就是开挂的感觉吗?!
陈林的心情顿时变得愉悦起来。
他不再纠结于身体不受控制这件事了。
带着这种心态,陈林开始认真地“旁观“起了第二章的内容。
第二章《算法分析》,相比第一章的概述,内容就要硬核得多了。
大O表示法的严格数学定义。
常见函数的增长率比较。
递归方程的求解方法。
最大子序列和问题的几种不同算法及其时间复杂度分析。
......
这些内容,如果让陈林自己看的话,没有个把小时肯定是搞不定的。
因为里面涉及到了不少数学推导和证明。
虽然有【小小数学家】称号在身,数学方面的东西难不倒他。
但问题是,这些数学推导和证明,是和算法本身紧密结合的。
你不仅要看懂数学,还要理解这些数学背后的算法思想。
这需要时间来消化。
然而——
系统似乎并不打算给他这个时间。
书页依然在稳定地翻动着。
没有停顿,没有回翻。
就好像在读一本网络小说一样流畅。
二十分钟后。
第二章也看完了。
陈林再次开始在脑海中回想刚才的内容。
“大O表示法的定义是......“
“如果存在正常数c和n₀,使得对于所有n≥n₀,都有T(n)≤c·f(n),则称T(n)=O(f(n))......“
“常见增长率从慢到快的排列是:常数级O(1)、对数级O(log n)、线性级O(n)、O(n log n)、多项式级O(n²)、O(n³)......指数级O(2ⁿ)、阶乘级O(n!)......“
“递归方程求解的三种方法:代入法、递归树法、主定理......“
“最大子序列和问题的几种解法:暴力枚举O(n³)、优化枚举O(n²)、分治法O(n log n)、动态规划O(n)......“
清晰。
完整。
准确。
陈林在心里又默默地比对了一下书上的内容——虽然书已经被系统翻到了第三章,但他刚才“被迫“看过的内容,他都记得清清楚楚。
一个字都没落下。
更重要的是,他不仅记住了,还理解了。
比如那个主定理——
T(n)= aT(n/b)+ f(n)
如果是以前的他,看到这个公式可能需要反复推敲好几遍才能弄明白a、b、f(n)各代表什么意思。
但现在,他脑子里直接就有答案:
a是子问题的个数。
b是子问题规模相对于原问题的比例。
f(n)是合并子问题解所需的额外工作量。
然后根据f(n)和n^(log_b a)的关系,就能直接套公式得出时间复杂度。
这种感觉有点类似于【小小数学家】解决数学问题的时候陈林的感觉。
“牛逼啊......“
陈林在心里由衷地感叹了一句。
而系统则完全没有管陈林此时的心理变化,已经翻到了第三章......