kaisawind's blog
  • 关于
  • 所有帖子

时间复杂度 - Thu, Jun 11, 2020

时间复杂度

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... {
    }
}


辽ICP备2021007608号 | © 2025 | kaisawind

Facebook Twitter GitHub