时间复杂度

  1. 1. 概述
  2. 2. 常用时间复杂度

时间复杂度

1. 概述

定性描述该算法的运行时间。
时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。例如,如果一个算法对于任何大小为 n (必须比 n0 大)的输入,它至多需要 5n3 + 3n 的时间运行完毕,那么它的渐近时间复杂度是 O(n3)。

2. 常用时间复杂度

  • $O(1)$
    单if判断

    if x == 0 {
    }
  • $O(\log n)$
    二分法查找

    func binarySearch(arr []int, low, high, hkey int) int {
      for low <= high {
          mid := low + (high-low)/2
          if arr[mid] == hkey {
              return mid
          } else if hkey < arr[mid] {
              high = mid - 1
          } else if hkey > arr[mid] {
              low = mid + 1
          }
      }
      return -1
    }
  • $O(n)$
    单for循环

    for k, v := range n... {
    }
  • $O(n^{2})$
    二重for循环

    for k, v := range n... {
      for k, v := range n... {
      }
    }

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 wind.kaisa@gmail.com

文章标题:时间复杂度

本文作者:kaisawind

发布时间:2020-06-11, 02:06:12

最后更新:2020-11-18, 15:55:44

原始链接:https://kaisawind.gitee.io/2020/06/10/2020-06-11-time-complexity/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏