首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >算法频率计数

算法频率计数
EN

Stack Overflow用户
提问于 2010-12-06 03:52:07
回答 2查看 5.1K关注 0票数 3

我需要知道如何在以下程序中确定sum:= sum+1语句的频率计数:

代码语言:javascript
复制
sum:=0

for i:=1 to n do
  for j:=1 to i do
    for k:=1 to j do
        sum:= sum+1
    end<br/>
  end
end

我还想知道,一般来说,如何确定所有算法的频率计数,而不仅仅是这个算法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-06 08:48:08

∑∑∑1=∑∑j=∑∑(i*(i+1))/2 =∑∑(i^2+i)/2= (n(n+1)(2n+1)/6+n(n+1)/2)/2 = n(n+1)(n+2)/6

你的公式是:

代码语言:javascript
复制
F(n) = n(n+1)(n+2)/6

目前还没有一种通用的计算运行时间的方法,如果有方法的话,复杂性理论就应该从计算机科学中删除。

票数 5
EN

Stack Overflow用户

发布于 2010-12-06 04:11:43

好吧,让我们从内到外建立这个。

每次运行内环时,代码行都执行j次。到目前一切尚好。

因此,每次运行中间循环时,我们都会执行语句1 + 2 + 3 + ... + i - 1 + i次数。任何人都应该认识到这等于i * (i + 1) / 2。或(i^2 + i) / 2

对于每次运行外部循环,我们都要执行语句((1^2+1) + (2^2+2) + ... (n^2+n))/2时间。

我将把最终结果留给读者做练习。

虽然这个问题在一般情况下是无法判定的--如果您知道程序中每一行代码将执行多少次,那么您就解决了停止问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4363039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档