好算法
正确、健壮、可读 很重要
但是我们更关注它的效率。即希望速度尽可能快;储存空间尽可能少
度量效率需要用到成本
因为成本 = 运行时间+所需存储空间
值得注意的是规模往往是决定计算成本的主要因素
规模T(n)= 需执行的基本操作次数
理应关注规模的最坏情况,由此诞生
大O记号
T(n) = O(f(n))
if 存在c>0
,当n>>2
后,有T(n)<c*f(n)
与T(n)
相比 , f(n)
更为简洁,并且仍然表示其增长趋势
两个特点
接下来是算法效率层级
O(1)
常数(constant function)
2 = 2019 =2019*2019 = O(1) , 甚至20192019 = O(1)
这类的算法效率最高
不含转向(循环、调用、递归等