8得票3回答
向二叉堆中插入n个元素的渐进时间复杂度(已包含n个元素)

假设我们有一个包含n个元素的二叉堆,并希望插入另外n个元素(不一定是连续的)。这将需要多少总时间? 我认为时间复杂度为theta(n logn),因为每次插入需要logn时间。

8得票4回答
预期运行时间与最坏情况运行时间

我正在学习随机快速排序算法。我意识到这个算法的运行时间总是表示为“期望运行时间”。 为什么要指定或使用“期望运行时间”?为什么不计算最坏情况或平均情况?

8得票2回答
如何解决以下递归问题?(涉及IT技术)

除了主定理、递归树和代换法之外,我不熟悉其他的循环求解技巧。我猜测解决下面这个循环求解式的大O边界并没有使用那些方法: T(n) = T(n-1) + 2T(n-2) + 1

7得票2回答
这个算法是否能够以O(n)的时间复杂度运行?

注意:这是《破解程序员面试》第五版中的问题4.3。 问题:给定一个已排序(按升序)的数组,请编写一个算法,创建一个具有最小高度的二叉搜索树。 以下是我用Java编写的解决此问题的算法: public static IntTreeNode createBST(int[] array) ...

7得票4回答
调用另一个函数的时间复杂度是多少?

我知道如何计算几乎任何选项的时间复杂度(简单函数、带循环的函数等),但我无法确定调用另一个函数的函数的时间复杂度,特别是如果调用函数的函数在循环内部。 我编写了一些函数作为示例。 int g(int k) { int i=0; while(k>0) { i += k...

7得票1回答
List.Add的渐进复杂度是什么?

我发现关于 List.Add() 的渐近复杂度存在很多争议。我怀疑其源头是最坏情况 导致基础数组重新调整大小,逻辑上应该是 O(n) 操作。然而,每次列表空间不足时,数组的大小会增加两倍。这使得需要为 n 个元素调整大小的次数与 log(n) 成比例。 这是否意味着 Add 操作在平均情况下...

7得票2回答
Java集合addAll的复杂度

有没有一个时间复杂度为O(1)而不是O(n)的Java集合可用于addAll操作?还是我必须自己实现集合?使用高效的链表,Collection1.addAll(Collection2) 操作应该将第二个集合附加到第一个集合,将collection2的第一个节点添加到collection1的最后...

7得票3回答
双重循环的复杂度

我正在尝试使用大O符号表示法来确定for循环的复杂度。我以前在其他课程中做过这个,但这个更加严格,因为它是关于实际算法的。 代码如下: for(cnt = 0, i=1; i<=n; i++) //for any size n { for(j = 1; j <= i; j...

7得票2回答
n选取地板(n/2)的渐近增长

我可以帮助你翻译。以下是需要翻译的内容: 如何找到 n 选 floor(n/2) 的渐近增长?我尝试使用展开式,得出它等于 [n*(n-1)*........*(floor(n/2)+1)] / (n-floor(n/2))! 有什么想法可以帮助我继续进行吗? 非常感谢任何帮助,更倾向...

7得票1回答
主定理实际上可以在什么情况下应用?

我对此感到非常沮丧。 在CLRS第三版的第95页(第4.5章)中提到,像 T(n) = 2T(n/2) + n lg n 这样的递归无法用主定理解决,因为差异 f(n)/n^(log_b(a)) = (n lg n)/n^1 = lg n 不是多项式。 但是我发现像这个网页底部提到...