C++——时间复杂度

时间复杂度的估算

方法

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

例如代码:

cpp 复制代码
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)))

但是还是要知道

text 复制代码
排序算法时间复杂度:
冒泡排序(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)

举一反三

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

cpp 复制代码
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))

相关推荐
GreenTea3 小时前
深度解读 Anthropic 多智能体报告:更强的模型 ≠ 更好的协调
前端·后端·算法
码匠许师傅3 小时前
【C++ 面试真题】聊聊 C++ 的移动语义与右值引用
java·c++·面试
fqq33 小时前
力扣刷题前置Java语法
算法·leetcode·职场和发展
小小龙学IT4 小时前
DuckDB 深度实战:用 C++ 在进程内跑一个「分析型数据库」
数据库·c++
知无不研6 小时前
lambda表达式的使用(3)
开发语言·c++·lambda
2501_906565126 小时前
数学之美探究
算法
oier_Asad.Chen6 小时前
【洛谷题解/AcWing题解/OI学习笔记】洛谷P2868【USACO07DEC】Sightseeing Cows G(01分数规划求最大比率)
算法·图论·spfa·二分·负环
C++ 老炮儿的技术栈7 小时前
基于Qt实现轻量化本地音乐播放器
开发语言·c++·qt·c·播放器·音乐
leisoo80978 小时前
财报数据怎么排雷本地化Python构建财务异常预警系统
人工智能·python·算法
qz_Serene9 小时前
C++:类和对象(上)
开发语言·c++