59得票8回答
时间复杂度和空间复杂度有什么区别?

我发现在大多数情况下,时间复杂度与空间复杂度是相互关联的。例如,在数组遍历中:for i=1 to length(v) print (v[i]) endfor 很容易看出,该算法在时间上的复杂度为O(n),但我认为空间复杂度也是n(也表示为O(n)?)。 我的问题是:一个算法的时间复...

56得票24回答
O(log N) == O(1) - 为什么不是呢?

每当我考虑算法/数据结构时,我倾向于用常数替换log(N)部分。哦,我知道log(N)会发散 - 但在实际应用中有关系吗? 对于所有实际目的,log(无穷大) 我真的很好奇有哪些现实世界的例子不符合这个规律。 为了澄清: 我理解O(f(N))。 我想知道现实世界的例子,其中渐近...

55得票3回答
寻找调和级数的时间复杂度(Big O)。

证明1 + 1/2 + 1/3 + ... + 1/n is O(log n). Assume n = 2^k 我将这个级数代入求和式中,但不知道如何解决这个问题。欢迎任何帮助。

55得票8回答
检测字符串是否具有唯一字符:将我的解决方案与《破解编程面试》进行比较?

我正在学习《破解编程面试》这本书,遇到了一些问题需要回答,但我需要帮助将我的答案与解决方案进行比较。我的算法是有效的,但我很难理解书中的解决方案,主要是因为我不理解一些运算符到底在做什么。 任务是:实现一个算法来确定字符串是否具有所有唯一字符。如果不能使用额外的数据结构怎么办? 这是我的解...

55得票5回答
一个switch语句的运行时间复杂度是多少?

我想知道一个switch语句在最坏情况下的运行时间复杂度,假设你有n个case。 我一直认为它是O(n)。但我不知道编译器是否会做一些聪明的事情。如果答案与实现相关,我想了解以下语言的情况: Java C/C++ C# PHP Javascript

55得票5回答
O(n log n)和O(n)——时间复杂度上的实际差异

n log n > n -- 但这就像是一种伪线性关系。如果 n=10亿,log n ~ 30; 因此,n log n 将是 300亿,即 30 X n,是 n 的阶数。 我想知道在现实生活中,n log n 和 n 之间的时间复杂度差异是否显著。 例如:在未排序的数组中查找第 k ...

55得票4回答
带有查找最小/最大值的栈比O(n)更高效吗?

我对创建一个类似于栈的Java数据结构感兴趣,该数据结构应尽可能高效地支持以下操作: Push: 在堆栈顶部添加新元素 Pop: 删除堆栈顶部元素 Find-Max: 返回(但不删除)堆栈中最大元素 Find-Min: 返回(但不删除)堆栈中最小元素 这个数据结构最快的实现方式是什么?...

54得票1回答
有人能解释一下大O、大Ω和大θ吗?

可能是重复问题: 大O符号——大Theta符号和大Omega符号分别代表什么意思? 我理论上明白,但是我在应用这三个概念时遇到了困难。 在学校里,我们总是使用大O符号来表示算法的复杂度。例如,冒泡排序的复杂度为O(n^2)。 现在,在阅读了一些理论之后,我知道大O并不是唯一的衡量标准...

54得票8回答
为什么在排序数组中查找特定值的速度不可能比O(log n)更快?

我对计算机科学还非常陌生。在一堂课的结尾,我的AP计算机科学老师提到,在已排序数组中查找指定值的比较模型是大omega(log n),即Ω(log n),据我理解,这意味着无法以更快的速度完成此任务,最快也只能是O(log n)。这是为什么?

53得票7回答
为什么这个算法的大O复杂度是O(n^2)?

我知道这个算法的大O复杂度是O(n^2),但我不明白为什么。int sum = 0; int i = 1; j = n * n; while (i++ < j--) sum++; 虽然我们一开始设置了j = n * n,但在每次迭代中我们将i增加而将j减少,所以最终的迭代次数应...