chapter_computational_complexity/time_complexity/ #18
Replies: 124 comments 193 replies
-
本页中n^2的讲解中,以「冒泡排序」为例,外层循环n-1 次,内层循环···次,平均为n/2次,因此时间复杂度为 ··· 。在这里计算的是最差时间复杂度,是不是描述应该为计算内层冒泡排序次数的等差数列求和,而不是平均n/2再乘以外层(n-1)的描述,感觉容易造成歧义。 |
Beta Was this translation helpful? Give feedback.
-
最差 O 平均 θ 最优 Ω |
Beta Was this translation helpful? Give feedback.
-
大佬好,界面是不是加一个“返回顶部”的按钮会更方便些呀; |
Beta Was this translation helpful? Give feedback.
-
大佬你好,我是一个算法小白,在看公式时就有了困难,比如这个公式T(n)= 3 +2n,文中也没有具体写是怎么推导出来的,不仅如此,其他公式的推导好像也没有太详细。不知我是不是还该继续看下去。 |
Beta Was this translation helpful? Give feedback.
-
指数阶, 那个代码里面应该是 return expRecur(n - 2) + expRecur(n - 1) + 1吧; |
Beta Was this translation helpful? Give feedback.
-
哈喽,k大,worst_best_time_complexity.cpp 代码编译时出错 ➜ chapter_computational_complexity git:(master g++ worst_best_time_complexity.cpp
worst_best_time_complexity.cpp: In function ‘std::vector<int> randomNumbers(int)’:
worst_best_time_complexity.cpp:17:21: error: ‘chrono’ has not been declared
17 | unsigned seed = chrono::system_clock::now().time_since_epoch().count();
| ^~~~~~
worst_best_time_complexity.cpp:19:5: error: ‘shuffle’ was not declared in this scope
19 | shuffle(nums.begin(), nums.end(), default_random_engine(seed));
| ^~~~~~~ 原因是在
添加后编译通过,运行正常 ➜ chapter_computational_complexity git:(master g++ worst_best_time_complexity.cpp -o worst_best_time_complexity
➜ chapter_computational_complexity git:(master ls worst_best_time_complexity*
worst_best_time_complexity worst_best_time_complexity.cpp
|
Beta Was this translation helpful? Give feedback.
-
看不明白,这章好像只是知道了时间复杂度的表示方式。 |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
K神,阶乘阶的操作总数应该不是等于最底层结点数量吧,是所有结点中的操作总数之和吗? |
Beta Was this translation helpful? Give feedback.
-
指数阶这段没看懂count = 1 + 2 + 4 + 8 + .. + 2^(n-1) = 2^n - 1。为什么最后等于2^n - 1 |
Beta Was this translation helpful? Give feedback.
-
能看到这本书真的太好了 |
Beta Was this translation helpful? Give feedback.
-
我不太清楚是不是我的系统问题,这两天一直在看,前几天似乎没问题。今天起的教程似乎所有显示数学公式的地方都出了问题?比如2.2.4中的一段变成了这样: 以下示例展示了使用上述技巧前、后的统计结果。 Edge 和 Chrome 都有这样的显示问题 |
Beta Was this translation helpful? Give feedback.
-
学习数据结构画图太重要了,作者的图画的太棒啦,可以知道是什么软件画的吗 |
Beta Was this translation helpful? Give feedback.
-
/* 指数阶(递归实现) */
function expRecur(n: number): number {
if (n == 1) return 1;
return expRecur(n - 1) + expRecur(n - 1) + 1;
} 这是在求什么,为什么最后要+1。没懂这里,谢谢。如果不要+1应该是求最后一层树结点数量,再+1就不知道是求什么了。请问是我理解错了吗?能不能分析一下这个函数的复杂度,谢谢大佬。已经理解了,是求全部节点数量,即操作次数,没毛病。谢谢大佬。太巧妙了。 总结为:n层的总节点数是n-1层总结点数*2 + 1,第1层总数为1,所以可以这样递归写。 看完gpt的答案我也懂了,感觉可以参考gpt的回答改进一下。 上述函数的时间复杂度为指数阶(Exponential Time),记作O(2^n)。 在函数中,每次递归调用expRecur(n - 1)会导致另外两次递归调用,因此函数的递归深度将以指数级增长。每次递归调用的时间复杂度是常数级的,但由于递归的次数是指数级的,因此整体时间复杂度也是指数级的。 简单来说,随着输入n的增加,函数的执行时间将指数增长,导致非常低效。因此,这是一个效率较低的实现,特别是在处理大型输入时。如果需要更高效的实现,可以考虑使用其他算法或优化技巧来减少递归的次数。 |
Beta Was this translation helpful? Give feedback.
-
细胞分裂,这样循环不就可以了吗 为什么要套一层base循环呢 |
Beta Was this translation helpful? Give feedback.
-
阶乘的计算 是不是不太对啊?时间复杂度应该是 O(n) |
Beta Was this translation helpful? Give feedback.
-
关于2.3.2和2.3.3处, |
Beta Was this translation helpful? Give feedback.
-
请教一下,那我们通常所说的时间复杂度 |
Beta Was this translation helpful? Give feedback.
-
指数阶的例子中,exp_recur(n - 1) + exp_recur(n - 1)+1为什么不写成2exp_recur(n - 1)+1呢,二者有区别吗 |
Beta Was this translation helpful? Give feedback.
-
在计算运行时间和操作数时,没有包括循环变量初始化的操作,以及每次循环条件比较的操作? |
Beta Was this translation helpful? Give feedback.
-
hh 百度搜 “像耳机一样的符号” 欧米茄(Ω) |
Beta Was this translation helpful? Give feedback.
-
时间复杂度的数学定义有点问题,这个定义给出的是个上界,但不是紧致上界,依定义线性复杂度算法既是O(n), 也是O(n2),还是O(nn)。应该给出的是一个被常数夹逼的区间:如果存在常数 c_1 、 c_2 和 n_0 ,使得对于所有 n > n_0 ,都有: c_1 * f(n) < T(n) < c_2 * f(n) ,我们说 T(n) 是 O(f(n)) 。 |
Beta Was this translation helpful? Give feedback.
-
在指数阶运算的第三段代码中,return exp_recur(n - 1) + exp_recur(n - 1) + 1这里为什么加了两次exp_recur(n - 1)啊 |
Beta Was this translation helpful? Give feedback.
-
经过n次分裂后 2^0 +2^1 +2^n =2^n -1
T(n) =2^n - 1
用类比法,如下
T(1)=1
T(2)=2^2 - 1 =3
T(3)=2^3 - 1 =7
……
代码里
expRecur(n)=expRecur(n - 1) + expRecur(n - 1) + 1
expRecur(n)=2 * expRecur(n - 1) + 1
expRecur(1)=1
expRecur(2)=2 * expRecur(1) + 1=3
expRecur(3)=2 * expRecur(2) + 1 =7
…….
所以
expRecur(n)=T(n)=2^n - 1
代码可以去计算,经过n次分裂后的数据
就是用简单数学换算。
null
yimu ***@***.***>于2024年10月16日 周三23:05写道:
… 在指数阶运算的第三段代码中,return exp_recur(n - 1) + exp_recur(n - 1) +
1这里为什么加了两次exp_recur(n - 1)啊
—
Reply to this email directly, view it on GitHub
<#18 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AVZFKIP35JTJTMOULQKSF2TZ3Z6DTAVCNFSM6AAAAAASLISNF6VHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTAOJWGEZDENA>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
好迷茫啊 以后全栈还是大前端
null
yimu ***@***.***>于2024年10月17日 周四19:57写道:
… 嗷嗷,这样啊,明白了,谢谢
—
Reply to this email directly, view it on GitHub
<#18 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AVZFKIMG2EQE7GNYWCMXPRLZ36Q3LAVCNFSM6AAAAAASLISNF6VHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTAOJXGA3TCNA>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
兄弟 指点一下
null
beihuxiansheng ***@***.***>于2024年10月24日 周四15:19写道:
… 全栈已经提了快10年了,谁听谁惨,不要走技术方面的全栈
—
Reply to this email directly, view it on GitHub
<#18 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AVZFKIJDQC2PIB5XBO6ZAVLZ5CNOZAVCNFSM6AAAAAASLISNF6VHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTCMBTG4ZTMOI>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
由于输入数组是被打乱的,因此元素 1 |
Beta Was this translation helpful? Give feedback.
-
在指数阶运算的第三段代码中,return exp_recur(n - 1) + exp_recur(n - 1) + 1这里为什么要加1啊 |
Beta Was this translation helpful? Give feedback.
-
就是等比数列求和的变形
s(n)= 2^n - 1
s(n)= 2 * s(n-1) + 1
同理,你也可以整出其他花样
null
LI Jiaxing ***@***.***>于2024年11月15日 周五20:36写道:
… 在指数阶运算的第三段代码中,return exp_recur(n - 1) + exp_recur(n - 1) + 1这里为什么要加1啊
—
Reply to this email directly, view it on GitHub
<#18 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AVZFKIJBNOLPZ6HEEW7SO6D2AXTD3AVCNFSM6AAAAAASLISNF6VHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTCMRWGY2TCNQ>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
chapter_computational_complexity/time_complexity/
动画图解、一键运行的数据结构与算法教程
https://www.hello-algo.com/chapter_computational_complexity/time_complexity/
Beta Was this translation helpful? Give feedback.
All reactions