在上一篇关于复杂度的文章中我们说到总复杂度等于量级最大的那段代码的复杂度。在工程中,针对小规模问题的解决方法对大问题常常不适用,例如对几十个数字排序,可能要做一千到几千次的操作,看似差别不大,但是到了上万个数字排序时,那么就是几百万和几亿的巨大差别了,我们会说这两种方法有量级上的差别。量级是优秀工程师首先关注的。那么什么是量级呢?
量级和数量级
数量级是和量级相似的概念,数据相差10倍左右,比如个、十、百、千、万就是数量级的差距。
量级是比数量级差距更大的概念。简单的讲,就是芝麻、橘子、西瓜、大象、大山、地球、太阳、银河系这样大的差别。例如在排序算法中,排序的数量从几个增加到几万的时候,计算量要增加几亿倍,而科学家找到的算法计算量只会增加十万倍左右,几亿和十万基本上就属于量级之差了。
有了量级的概念后,工程师在处理不同量级的事物时有两点不同:
- 小量级和大量级的东西放在一起,前者必须被忽略。
- 几个小量级的东西放在一起,远比不上一个大量级的东西。
一个好的工程师,要懂得把精力放在从量级上改进工程方法,这样的收获是几百倍,几万倍甚至更多。而不是每天挤出时间做重复性的事情。