算法v.s.程序: 程序 = 数据结构+ 算法;
1.时空复杂度T(n)/O(n)(衡量一个算法的优劣)
1.1最坏/最好/平均(所有输入等概出现)时间复杂度;
1.1.1 E.g.手算某算法(冒泡排序)程序段的T,O;
1.2算法的渐近表示;
1.2.1复杂度函数的阶
1.2.1.1定义【Θ,Ω,O】:
1.2.1.2例题:
1.2.1.3个人理解:
对于x=Ω(y),x=O(y)这种,我们先抓住主体:
即我们考虑的是如何衡量x的范围,而y只是我们找来去包围/上方拦的工具函数;【比如O是上界函数,则括号内的函数,才是上界函数,而非等式左侧】
- Θ【theta,渐近紧致界】,x=Θ(y),则y是x的包围线;
- 如果f(n) = Θ(judge(n));即f函数可以被judge函数上下包围住(注意其中judge即g函数)
- O【上界函数】;如果 x=O(y),则表示y【O括号里的符号】是x的上界函数,而x是y的低阶(即在下面)
- f(n) = O(g(n))F被上界函数g在y轴上方拦住,即g是f的天花板一样;
- Ω(下界函数),如果x=Ω(y),则表示y【Ω括号里的符号】是x的下界函数,而x是y的高阶(即在下面)
1.2.2常见-时间复杂度比较(常对线, 幂指阶)
口诀:常对线,谜之接Q(doge)【背住了直接秒杀!】: