C++——时间复杂度

时间复杂度的估算

方法

时间复杂度十分的简单,但是在估算时有些需要注意的点还是要写

例如代码:

for (int i = 0; i < n; i++{
	int x;
	cin >> x;
	a[i] = x;
}

这段代码的时间复杂度是:O(n),当然在实际估算的时候也不需要太精确

常见的时间复杂度有这些:
O ( l o g ( n ) ) O(log(n)) O(log(n))
O ( s q r t ( n ) ) O(sqrt(n)) O(sqrt(n))
O ( n ) O(n) O(n)
O ( n 2 ) O(n^2) O(n2)
O ( n + m ) O(n+m) O(n+m)
O ( 1 ) O(1) O(1)
O ( l o g ( l o g ( n ) ) ) O(log(log(n))) O(log(log(n)))
O ( n × l o g ( n ) ) O(n\times log(n)) O(n×log(n))
O ( n × l o g ( l o g ( n ) ) ) O(n \times log(log(n))) O(n×log(log(n)))
也不多,在考试的时候基本都用得着

一般双重循环的就是 O ( n 2 ) O(n^2) O(n2)

三重循环就是 O ( n 3 ) O(n^3) O(n3)

一般考试的时候不考 O ( l o g ( n ) )   O ( l o g ( l o g ( n ) ) )   O ( n × l o g ( n ) ) O ( n × l o g ( l o g ( n ) ) ) O(log(n)) \ O(log(log(n))) \ O(n \times log(n)) O(n \times log(log(n))) O(log(n)) O(log(log(n))) O(n×log(n))O(n×log(log(n)))

但是还是要知道

排序算法时间复杂度:
冒泡排序(Bubble Sort): 平均时间复杂度为 O(n^2)
选择排序(Selection Sort): 平均时间复杂度为 O(n^2)
插入排序(Insertion Sort): 平均时间复杂度为 O(n^2)
快速排序(Quick Sort): 平均时间复杂度为 O(nlogn),在最坏情况下会退化到 O(n^2)
归并排序(Merge Sort): 平均时间复杂度为 O(nlogn)
堆排序(Heap Sort): 平均时间复杂度为 O(nlogn)

举一反三

给出以下函数,请推算出平均时间复杂度:

bool judge(int n)
{
	for (int i = 2; i*i < n; i++)
	{
		if (n % i == 0)
		{
			return false;
		}
	}
	return true;
}

答案:
平均时间复杂度为 O ( s q r t ( n ) ) O(sqrt(n)) O(sqrt(n))

相关推荐

  1. C++——时间复杂

    2024-06-10 14:40:02       5 阅读
  2. 时间复杂

    2024-06-10 14:40:02       13 阅读
  3. 时间复杂和空间复杂

    2024-06-10 14:40:02       30 阅读

最近更新

  1. Leetcode 415. 字符串相加-大数相加

    2024-06-10 14:40:02       0 阅读
  2. Docker使用心得

    2024-06-10 14:40:02       0 阅读
  3. 富格林:细心发现虚假确保安全

    2024-06-10 14:40:02       0 阅读
  4. 解析文字示例

    2024-06-10 14:40:02       0 阅读
  5. 计算机系统结构期末复习

    2024-06-10 14:40:02       0 阅读
  6. C#中[StructLayout(LayoutKind.Sequential, Pack = 1)]解释

    2024-06-10 14:40:02       0 阅读
  7. MySQL 保姆级教程(八):创建计算字段

    2024-06-10 14:40:02       0 阅读

热门阅读

  1. 为何数据仓库需要“分层次”?

    2024-06-10 14:40:02       7 阅读
  2. tensorRT 自定义算子plugin的实现

    2024-06-10 14:40:02       5 阅读
  3. 使用git stash暂存改动,并备注改动内容

    2024-06-10 14:40:02       7 阅读
  4. Vue3学习

    2024-06-10 14:40:02       3 阅读
  5. 使用c语言实字符串倒置及逆波兰数(栈)

    2024-06-10 14:40:02       3 阅读
  6. web前端报名点:深入探索与报名流程指南

    2024-06-10 14:40:02       5 阅读
  7. 深拷贝&浅拷贝解析,从原理理解深拷贝

    2024-06-10 14:40:02       5 阅读
  8. 不要使用业务键作为数据库主键

    2024-06-10 14:40:02       6 阅读
  9. 爬山算法的详细介绍

    2024-06-10 14:40:02       5 阅读