掌握算法模型1.数量级
好的程序员比差的程序员强多少呢?
2倍?3倍?
是100倍。
不是一个打十个,而是一个打一百个。
其实,人和人的差距都是可以用数量级来计量的。
什么是数量级?
简单地说,就是以10的幂次来衡量。
比如,10和100,就差了一个数量级;100和1000,也差了一个数量级。
在计算机的世界里,算法的复杂度是最重要的,好的算法和差的算法是数量级的差距。
举个例子,只有100个数据时,算法A用时0.01毫秒,算法B用时0.1毫秒。
在有100万个数据时,算法A用时8000毫秒,算法B用时5000毫秒。
请问,哪个是好算法?
你可能会说,数据量小的话A好,数据量大就B好。
但实际上,计算机考虑的,是数据量在无穷大时算法的表现。因为它本身就是为处理大量的数据而生的。
换句话说,如果两个算法之间没有数量级的差距,那它们的复杂度就是一样的。
这就是大O计数法。
对于个人来说,想要脱颖而出,你不是要比别人好一两倍,而是要好十倍。做到数量级的差距,可以说是另一种形式的降维打击。
掌握算法模型2.递归
递归和递推(不是地推)是一对好兄弟,想了解递归,不妨先来看看什么是递推。
递推,就是按照从前往后的顺序来梳理思路。比如我们熟知的数学归纳法,