程序运行都是需要时间的,我们用大O法来表示,程序在最坏情况下,运行时间和输入规模的关系。
一般有这么几种大O时间:
快:
闪电:O(1) - 常量复杂度 - 和输入无关;比如通过数组下标访问元素;简单数学运算,如看末尾数字是否是基数;
火箭:O(log n) - 对数复杂度 - 时间增长随数字规模增长缓慢;这种复杂度通常把问题分而治之,当输入规模翻倍时,时间却增长很小;
平均:
兔子:O(n) - 线性复杂度 - 时间随输入规模呈线性增长;比如对数组中每个元素操作;
自行车:O(n log n) - 线性对数复杂度 - 比如归并排序和快速排序;
慢:
大象:O(n^2) - 平方复杂度 - 时间随输入规模增长呈平方级增长;比如冒泡排序,选择排序;
乌龟:O(2^n) - 指数复杂度 - 时间随输入规模增长呈指数级增长;
小树生长:O(n!) - 阶乘复杂度。