“时间复杂度”的理解

来源:互联网 发布:seo关键词优化外包 编辑:程序博客网 时间:2024/06/07 00:25

  许多书籍和文章中对时间复杂度的解释是:定量描述了算法的运行时间。

  这个定义当然无错,但却不够精确。尤其对初学的朋友来说,在理解上可能会造成一些偏差。

  譬如,现有算法A和算法B,都是用于解决某问题,其中算法A的时间复杂度为O(1),算法B的时间复杂度为O(n),从理论上来分析,算法A的时间效率是要更高的。但是你却在实际操作过程中,发现算法B的运行时间更少(并非出于错误或偶然),这是怎么回事?是不是说明“时间复杂度”这一指标有缺陷呢?

  如果你有类似疑惑,那么你大概是误会了“时间复杂度”这一指标的用意。

  本文将用三词两句准确定位“时间复杂度”这一概念,并给出计算方法。

  先给出我对“时间复杂度”的理解:预估随着问题规模(n)变化时,算法运行时间的上界

  显然地,关键词是:

    预估:我们只需粗略计算其所在的数量级即可,不必过于精确。

    问题规模:实际上想知道的是当规模越来越大时,算法能在多大程度上保持高效,是一种动态的展望。

    上界:指的是算法运行的时间上界,也就是最慢会有多慢,即给出一个最坏的打算。

  两句关键句:

    我们关心的不是该算法最快能多快,而是最慢会有多慢。

    我们关心的不是该算法在小规模场景是否很慢,而是在大规模场景是否很快。



0 0