这可能是已涵盖的理由,但我尚未找到我能够理解的解释。我可能很快就会感到尴尬。
例如,我试图使用以下大O表示法求出数量级:
count = 0;
for (i = 1; i <= N; i++)
count++;
我从哪里开始发现什么定义了震级?我的数学能力相对较差,尽管我尝试了一些资源,但还没有找到能解释一段代码如何转化为代数方程的东西。坦率地说,我甚至无法猜测,关于这个循环的大O效率是什么。
我正在练习增长顺序,但我在确定以下函数的增长顺序时遇到了问题:
def ri(na):
if na <= 1:
return na
def han(na):
i = 1
while i < na:
i *= 2
return i
return ri(na/2) + ri(na/2) + han(na-2)
我相信函数han有一个增长的顺序$\Theta(n) = log(n)$,但我不确定在添加ri(na/2)时如何考虑这个问题。如果有人能帮我弄清楚如何计算运行
通常,当分析算法的运行时间时,我处理的是影响运行时间的单个输入。我正在尝试理解当有2个或更多的输入影响运行时间时,如何表示T(n)。 例如,在最坏情况下的线性搜索中: function LinearSearch(arr, N, x)
for (i = 0; i < N; i++) ---> C1*N + C2
if arr[i] = x ---> C3*N
return true
return false --->
给定一个数组。如何在固定时间内求出索引区间(i, j)中元素的和?你可以使用额外的空间。
示例:
答:3 2 4 7 1 -2 8 0 -4 2 1 5 6 -1
长度= 14
int getsum(int* arr, int i, int j, int len);
// suppose int array "arr" is initialized here
int sum = getsum(arr, 2, 5, 14);
在固定时间内,sum应为10。
def f1(n):
for i in range(n):
k = aux1(n - i)
while k > 0:
print(i*k)
k //= 2
def aux1(m):
jj = 0
for j in range(m):
jj += j
return m
我正在试图计算函数f1的时间复杂度,但它并不适用于我。
如果对我的工作有任何反馈意见,我将不胜感激。
我正在做的事情:我首先尝试替代i=1并尝试进行迭代,因此函数用m=n-1调用aux,aux1迭代n-1时间并返回m = n-1,
我试图根据昨天登录的用户,而不是今天的记录,来衡量权力的高低。
我的桌子是
其中的计数是用户当天登录的时间。
如何利用功率测量法求出以下几类计数
1) count of Today logged but not yesterday
2) count of Yesterday logged but not today
3) count of who logged yesterday and today as well
假设我有以下函数
def test(arr):
for i in range(10000):
for j in range(10000):
print("hello world")
for num in arr:
print(num)
总体时间复杂度是多少?我想我对嵌套的for循环更感困惑。它们是O(10,000^2)还是O(1),因为它们不依赖于输入arr大小。
在书中读到,调用子例程被认为是恒定时间操作,即使子例程本身不是在恒定时间内执行,而是取决于输入大小。如果我有下面这段代码:
void func(int m){
int n = 10;
subrout(m);//function which complexity depends on m
subrout2(n);//function which complexity depends on n
}
我想我可以认为func()是一个常数时间函数,例如O(1)?
如果我有这样的结果:
void func(){
int n = 10;
Type object;
o