Big O 标记法,大O标记法--衡量算法的标准

Big O 标记法,大O标记法

O(1)
O(n)

忽略常数项,数据量扩大n倍,时间扩大2n倍,则忽略2n中的常数2,计为O(n)
忽略低次项,复杂度计算为n^2+n,通常只计算最高次项的n^2,而忽略低次项n,计为O(n^2),即n的平方

举例:
两个数据结构数组和链表,求获取最后一个元素的时间复杂度:

  • 数组:由于数组的元素是紧密相连的排列,所以第n个元素是可以通过计算得到确切的偏移量,而读取第n个元素就变成了一次内存读取即可,所以跟数据量的大小没有必然联系,所以时间复杂度是一个常数,用O(1)来表示常数复杂度
  • 链表:由于链表的元素不是紧密相连的排列,所以第n个元素需要先取到n-1个元素,换句话说,需要从第1个元素开始取下一个元素,直到取到最后一个元素,每一次取下一个元素都需要cpu执行相应的指令,n越大,cpu执行的指令就越多,并且是线性关系,所以时间复杂度是一个线性值,用O(n)来表示

猜你喜欢

转载自blog.csdn.net/booynal/article/details/125589272
o