常数时间的操作
操作和数据样本的数据量没有关系,每次都是固定时间内完成的操作叫常数操作
时间复杂度为一个算法流程中,常数操作数量的一个指标。常用O(读作big O)来表示。最差情况
先对一个算法流程熟悉,总结出 常数操作的数量表达式
在表达式中,只要高阶项,不要低阶项,也不要高阶项的系数,剩下的部分如果为f(N),那么时间复杂度为O(f(N))
评价一个算法流程的好坏,先看时间复杂度的指标,在分析不同数据样本下的实际运行时间,也就是“常数项时间”
常见的复杂度
- 常数时间复杂度(O(1)):不论输入规模的大小,算法都需要恒定的时间。
- 线性时间复杂度(O(n)):算法的执行时间与输入规模成正比,例如遍历一个数组或者链表。
- 对数时间复杂度(O(logn)):算法的执行时间随着输入规模的增长而稍微增加,例如二分查找算法。
- 线性对数时间复杂度(O(nlogn)):算法的执行时间比纯线性复杂度稍高,例如快速排序算法或者归并排序算法。
- 平方时间复杂度(O(n^2)):算法的执行时间与输入规模的平方成正比,例如嵌套循环。
- 指数时间复杂度(O(2^n)):算法的执行时间随着输入规模的指数级增长,例如穷举法。