时间复杂度常用大O符号表述:
简单说O(n²)表示当n很大的时候,复杂度约等于Cn²,C是某个常数,简单说就是当n足够大的时候,n的线性增长,复杂度将沿平方增长。
O(n)也是差不多的意思,也就是说n很大的时候复杂度约等于Cn,C是某个常数。
O(1)就是说n很大的时候,复杂度基本就不增长了,基本就是个常量C。
举个例子:
要找到一个数组里面最大的一个数,你要把n个变量都扫描一遍,操作次数为n,那么算法复杂度是O(n)。
用冒泡排序排一个数组,对于n个变量的数组,需要交换变量位置次,那么算法复杂度就是O()。
那么常见数量级如下:
时间复杂度这个东西,其实更准确点说应该是描述一个算法在问题规模不断增大时对应的时间增长曲线。所以,这些增长数量级并不是一个准确的性能评价,可以理解为一个近似值,时间的增长近似于logN、NlogN的曲线。
下面这个到底是更直观了还是让你变得更晕了?
排序算法图片总结(图片来源于网络):
请先熟悉这些写法:
算法时间复杂度的表示法O(n²)、O(n)、O(1)、O(nlogn)