算法与数据结构系列 ( 一 ) - 算法的级别区分理解

算法的级别

 

O(1)、O(n)、O(n^2)、O(log n)、O(n log n)这些都是算法时间空间复杂度的表示。不仅仅用于表示时间复杂度,也用于表示空间复杂度。O 后面的括号中有一个函数,指明某个算法的耗时 / 耗空间与数据增长量之间的关系。其中的 n 代表输入数据的量

O (1) 的理解

  • O(1) 就是最低的时空复杂度了,也就是耗时 / 耗空间与输入数据大小无关,无论输入数据增大多少倍,耗时 / 耗空间都不变。无论数据规模多大,都可以在一次计算后找到目标(不考虑冲突的话)
  • 举个栗子
  • 比如你将家里的衣服很多,装了十个箱子,分别给他们打上标记 1 -10。有一天,你突然想穿 10 号箱子的一件衣服。你就可以迅速打开箱子把衣服拿出来,而且速度非常快。

O (n) 的理解

  • 时间复杂度为 O(n) ,就代表数据量增大几倍,耗时也增大几倍。
  • 很多常见的遍历算法,要找到一个数组里面最大的一个数,你要把整个数组都 for 一次,操作次数为 n,那么算法复杂度是 O(n)
  • 又举个了栗子
  • 有一天你突然很想穿某一件衣服,但是忘记衣服放在那个箱子里面了。你就需要从 10 个箱子里面挨个翻出来,并且找到你想要穿的衣服。

O (n^2) 的理解

  • 时间复杂度 O(n^2),就代表数据量增大 n 倍时,耗时增大 n 的平方倍,这是比线性更高的时间复杂度。比如冒泡排序࿰

你可能感兴趣的:(php,算法,php算法)