算法复杂度如何计算?

发布于 2022-09-03 12:16:05 字数 87 浏览 12 评论 0

今天我在看文章的时候,里面有一句话提到“算法复杂度达到 O(n^3),其中 n 是树中节点的总数”,那么这个大O是什么意思呢?O(n^3)这个复杂度是什么概念?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

感性不性感 2022-09-10 12:16:05

这里的O就是一般表示复杂度的一个标志,类似计算复杂度的函数名称一样。

复杂度一般分为空间复杂度和时间复杂度。
空间复杂度是指算法在运算过程中对内存空间占用的最大值。
时间复杂度是指算法在运算过程中对最大消耗的时间。

两种复杂度都是一种估算,
估算的方式就是根据代码的逻辑,分析出对于复杂度的公式。

在时间复杂度上,主要记录的是带有变量的循环。
比如for (i = 0; i < n; i ++) {...}可理解为O(n)
x = n + 1; y = x + 1; z = x + y;虽然是三条语句,但是没有循环操作,所以理解为O(1)

在空间复杂度上,主要记录的是带有变量的空间申请。
比如int[n] x;可以理解为O(n)
int x; int y; int z;虽然是三个变量,但是没有变化的申请操作,所以理解为O(1)

听,心雨的声音 2022-09-10 12:16:05

建議你先懂big-O的數學定義喔
Definition: f(n) = O(g(n)) means there are positive constants c and k, such that 0 ≤ f(n) ≤ cg(n) for all n ≥ k. The values of c and k must be fixed for the function f and must not depend on n.

夏雨凉 2022-09-10 12:16:05

O--同阶

n表示问题的规模,要处理的对象的数目。O(n^3)表示,随着问题规模n的增长,执行的计算规模呈k(n^3)+b的形式增长。b是常数,在公式化到最简的情况下,k是与n无关的系数。(精确的说法早就忘了,求轻拍)

往最具体的说,三重嵌套循环,最里层有一个计算语句,每个循环传进来的循环次数都是n,那么随着n的增长,这个计算语句被执行的次数呈n的三次方增长。

而同阶的意思是,可能呈 5n^3的形式增长,具体次数可能是5n^3+2,(比如把上面的嵌套循环写成一个函数,调用5次,另外再加两个固定的计算语句),但不管如何,它们都是n^3的同阶。这个同阶的概念来自于微积分的无穷大和无穷小,参考高等数学教材。

临风闻羌笛 2022-09-10 12:16:05

我的理解个人():复杂度就是你执行了多少次基础运算,n是规模,n的三次方最简单的情况就是三重嵌套循环。判断方法是去log然后向下取整。一次两次三次 就都是O1 1n 2n 3n 都是On.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文