13得票2回答
解决:T(n) = T(n/2) + n/2 + 1

我很难用O符号来定义以下算法的运行时间。我最初的猜测是O(n),但迭代之间的间隔和我应用的数字并不稳定。我如何错误地定义了这个算法? public int function (int n ) { if ( n == 0) { return 0; } int i = 1...

12得票1回答
哈希碰撞线性探测运行时间

我正在和朋友一起做作业,其中一个问题要求计算线性探测法的搜索、添加和删除的平均运行时间。我认为它是O(n),因为它必须在一定数量的节点上检查,直到找到一个可添加的空节点。而在搜索时,它从原始索引开始向上移动,直到找到所需的数字为止。但我的朋友说它是O(1)。哪一个是正确的呢?

12得票2回答
Python中列表的调整因子是什么?

例如,Java 中的 ArrayList 的调整大小因子为2。当 ArrayList 包装的数组空间不足时,该数组的所有元素都会转移到一个新数组中,该新数组的大小是原始数组的两倍。 由于 Python 的列表/数组是天然动态的,它们的调整大小因子是多少?还是它们使用了其他的缩放方法?如果是这...

12得票2回答
解决递归问题时,何时需要考虑楼层和上限?

我发现在解决递归问题时有些地方会忽略地板和天花板。 来自CLRS(第4章,第83页)的示例,在这个例子中忽略了地板: 这里(第2页,练习4.1-1)是一个忽略了天花板的例子: (编辑:根据公众意见,这有点可疑。) 事实上,在CLRS(第88页)中提到: “解决递归问题时,地板和...

11得票1回答
在一个数组中找到下一个更大的元素

给定一个数组, 对于每个元素,我需要找到在该元素右边且比当前元素大的最小元素。 数学上来说, 对于数组 A 中的每个下标 i,我需要找到下标 j,使得A[j] > A[i] j > i A[j] - A[i] is minimum 我需要找到每个索引(i)对应的j值。暴力解法时间复...

11得票1回答
有没有编程方式或Eclipse插件可以计算Java方法的大O符号?

是否有一种编程方式或 Eclipse 插件,可以计算 Java 方法的大 O 表示法(Big-O notation)?

11得票2回答
可以证明惰性求值在所有规约策略中具有最小的渐进时间复杂度吗?

当我阅读 Church Rosser II 定理的时候(链接),我想知道是否存在一些加强版的定理,使其不仅表明外最约简会终止,还能告诉我们渐进时间复杂度?或者,是否可以证明按需调用策略在所有约简策略中具有最小的渐进时间复杂度?

11得票1回答
为什么 SortedDictionary<K, V>.GetEnumerator 是 O(log n),但 SortedSet<T>.GetEnumerator 是 O(1)?

根据SortedSet&lt;T&gt;.GetEnumerator文档:   此方法是O(1)操作。 根据SortedDictionary&lt;K, V&gt;.GetEnumerator文档:   此方法是O(log n)操作,其中n是计数。 考虑到SortedDicti...

11得票5回答
递归的复杂度:T(n) = T(n-1) + T(n-2) + C。

我想了解如何推导出下面这个递归关系的复杂度。 T(n) = T(n-1) + T(n-2) + C,已知T(1) = C和T(2) = 2C; 对于像T(n) = 2T(n/2) + C(给定T(1) = C)这样的方程,通常我使用以下方法。 T(n) = 2T(n/2) + C =&g...

11得票2回答
计数排序的时间复杂度

我正在学习算法课程,发现计数排序的时间复杂度为O(n+k),其中k是数字范围,n是输入大小。我的问题是,当k和n之间的差异太大时,比如k=O(n2)或O(n3),我们能否说复杂度为O(n2)或O(n3)?在这种情况下,计数排序不是一个明智的选择,我们可以使用归并排序。我的理解正确吗?