遇见的题目——关于时间复杂度

Posted 666wolaichaungmen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了遇见的题目——关于时间复杂度相关的知识,希望对你有一定的参考价值。

在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是:

 

第一个for循环的时间复杂度为Ο(n),第二个for循环的时间复杂度为Ο(n²),则整个算法的时间复杂度为Ο(n+n²)=Ο(n²)。

  注、加法原则:T(n)=O(f(n))+O(g(n))=O(max(fn,gn))
 
  常见的算法时间复杂度由小到大依次为:
 
  Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n²)<Ο(n³)<…<Ο(2^n)<Ο(n!)<O(n^n)
 
Ο(1)表示基本语句的执行次数是一个常数,一般来说,只要算法中不存在循环语句,其时间复杂度就是Ο(1)。Ο(log2n)、Ο(n)、Ο(nlog2n)、Ο(n2)和Ο(n3)称为多项式时间,而Ο(2n)和Ο(n!)称为指数时间。计算机科学家普遍认为前者是有效算法,把这类问题称为P类问题,而把后者称为NP问题。

以上是关于遇见的题目——关于时间复杂度的主要内容,如果未能解决你的问题,请参考以下文章

蓝桥杯算法竞赛系列第四章——二分算法

数据结构—fibonacci数列的复杂度

关于数据量很大的题目

折半搜索(meet in the middle)

算法复杂度

递归算法的时间复杂度