大O

首先大O只是对算法复杂度的大概判断,从而对算法的优劣产生一个意识上的判断,并没有对算法实现的内容指导。

  •   大O按由易到难可分为O(1)、O(logan)、O(n)、O(na)、aO (n!),下面简单依个描述下:
    •   O(1):算法的实现和分析元素无关,只要是解决需求就可以。
    • 除了O(1)的级别,其余的都是与分析元素的个数有关,只是与个数的增长相比,实现的算法复杂度更多还是基本持平或更少的问题。
    •   O(logan):算法的实现和分析元素个数成对数级增长,这种级别的实现是很优秀的,当然是在可以实现的情况下。
    •    O(n):算法的实现和要分析的元素个数成正比,元素越多复杂度也会呈正比级别增长。在可以实现的情况下,这种级别实现的算法也是很优秀的。
    •   O(an)(a=2、3、4······ ): 算法的实现和要分析的元素个数成幂数级增长,这种级别的实现是算不上优秀的,因为每增加一个元素,算法的实现复杂度就多了na次,特别是当元素个数已经比较大时,这种级别的算法是会让人想揪掉头发的。
    •   O(n!): 这种级别的算法建议直接放弃,大部分都是拿来说着玩的,不会真正用在实际应用上,因为这种的实现是随个数的增长呈阶乘级别的增长,这种的增长是相当相当恐怖的,基本上分析元素的个数还不是很大时,算法的复杂度都已经是天文数字了。
原文地址:https://www.cnblogs.com/itheone/p/12643020.html