1 . 什么是程序的复杂性?
我们在写某些算法、或者某些程序片段的时候应该在Coding之前对自己的代码需要有一定的预估。比如我们如果写个排序被执行了“1”年,或者我们的代码最终生成的可执行文件超过了1G,相信任何一个产品经理都会直接恼火。所以,程序的复杂性在我理解,就是程序(算法、逻辑代码等)在空间资源和时间资源两个方面的消耗程度。
2 . 四个数学定义
··· 定义1:如果存在常数c和n0,使得当N>=n0时T(N)<=cf(N), 则记为T(N)= O(f(N))
··· 定义2:如果存在常数c和n0,使得当N>=n0时T(N)>=cg(N),则记为T(N)= Ω(g(N))
··· 定义3:T(N)= θ(h(N)),当且仅当T(N)-O(h(N))且T(N)= Ω(h(N))
··· 定义4:如果T(N) = O(p(N))且T(N)/ θ(p(N)),则T(N