10得票2回答
计算大阶乘的时间复杂度

我遇到了一个问题,需要计算非常大的阶乘值。我用 C++ 用两种不同的方式解决了这个问题,但我只想知道我的复杂度分析是否准确。 在任一方法中,我将非常大的数字表示为向量,其中v[0]表示最不重要的数字,最后一个索引处的值表示最重要的数字。版本1的代码可以在此代码片段中找到。 根据上述代码,似...

10得票3回答
在线性空间中存储成对求和

如果我们有两个大小为n的数组,并且想要对它们的总和进行排序,那么朴素的方法是将它们的总和存储在O(n^2)的空间中,并在O(n^2 logn)的时间内进行排序。假设我们被允许具有相同的O(n^2 logn)运行时间,则如何将这些总和存储在O(n)线性空间中? 我认为我们并不打算存储所有总和,...

10得票3回答
C ++中算法std :: includes的复杂性

算法std::includes接受两个已排序的范围,并检查set2是否在set1中(即set2的每个元素是否包含在set1中)? 我想知道为什么eel.is/c++draft说这个算法的复杂度最多是2·(N1+N2-1)次比较? 同样地, 1. cppreference 2. cplusp...

10得票3回答
最坏情况下的运行时间复杂度用Big O表示,最好情况下用Ω表示,但为什么有时候最坏情况下也会使用Ω?

我有些困惑,我以为在描述最坏情况的运行时间时要使用大O符号,而Ω符号用于最好情况?能否有人解释一下? 那么(lg n)不是最好情况吗?(nlg n)才是最差情况?或者我误解了什么? 证明堆大小为n时Max-Heapify的最坏情况运行时间是Ω(lg n)。(提示:对于具有n个节点的堆...

9得票1回答
寻找数学函数的上限(函数分析)

我正在通过一本书学习大O符号,但是它使用函数来解释大O符号,让我有些困惑。该书指出O(g(n))中的g(n)是f(n)的上界。因此,我理解这意味着在n的较大值时,g(n)为f(n)提供了最大的增长率。 此外,存在一个n_0,使得cg(n)(其中c是某个常数)和f(n)具有相同的增长率。 但...

9得票3回答
解决递归式

我正在尝试使用递归树解决给定的递归问题,T(n) = 3T(n/3) + n/lg n。 在第一层中,(n/3)/(log(n/3)) + (n/3)/(log(n/3)) + (n/3)/(log(n/3)) = n/(log(n/3))。 在第二层中,结果为n/(log(n/9))。 ...

9得票2回答
Clojure库函数的时间复杂度(Big O)

有没有什么资源可以列出基本的Clojure库函数(例如conj, cons等)的Big-O复杂度?我知道Big-O会根据输入类型而变化,但这样的资源是否可用?如果没有一个大致的运行速度概念的话,我编码时会感到不舒服。

9得票11回答
算法A的运行时间至少为O(n²) - 为什么这种说法是无意义的?

为什么这个语句: 算法A的运行时间至少为O(n²) 是没有意义的? 插入排序算法的运行时间最多为O(n²),是正确的吗? 我在网络上找了很久,但没有找到一个好的解释。 我还有一个问题: 我知道任何线性函数a⋅n+b都是O(n)和O(n²)。它也是O(n³)吗?

8得票3回答
算法分析 - 在排序数组中查找缺失的整数,时间复杂度优于O(n)

我正在第一次学习算法分析课程,并想知道是否有人可以协助下面的例子。我相信我已经用O(n)复杂度解决了它,但是我想知道是否有更好的 O(logn) 解法? 让 A = A[1] for(i = 1; i < n +1; i++) : if(A[i-1] > i) : ...

8得票2回答
大O符号的正式定义中的常量

我正在修订Big O和其他相关边界的正式定义,但有些事情让我困扰。在我正在阅读的书(Skiena)中,Big O被定义为: 当存在常数c使得f(n)总是<= c*g(n)时,f(n) = O(g(n)),其中n > n0 这通常对我来说很有意义。我们只关心足够大的n值,以便增长...