| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6629 人关注过本帖
标题:如何计算一个算法的时间复杂度
只看楼主 加入收藏
fantasy_______
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2008-9-21
收藏
 问题点数:0 回复次数:10 
如何计算一个算法的时间复杂度
例如:
void fun(int n)
{
    int i=0,j;
    do
    {
        for (j=0;j<n;j++)
            i+=j;    
    }while (i<n+1);
}

讲下详细的解题过程
搜索更多相关主题的帖子: 算法 时间 
2008-11-14 09:48
jdh99
Rank: 2
来 自:南师大
等 级:论坛游民
威 望:1
帖 子:59
专家分:15
注 册:2008-11-7
收藏
得分:0 
O(n)

[[it] 本帖最后由 jdh99 于 2008-11-14 10:50 编辑 [/it]]
2008-11-14 10:47
scheelite
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2008-11-5
收藏
得分:0 
如何计算一个算法的时间复杂度

题目就不明白什么意思
void fun(int n)
{
    int i=0,j;
    do
    {
        for (j=0;j<n;j++)
            i+=j;   
    }while (i<n+1);
}

for(i=0;i<n+1;)
    for (j=0;j<n;i+=j,j++);

这意思

[[it] 本帖最后由 scheelite 于 2008-11-14 11:04 编辑 [/it]]
2008-11-14 10:57
风居住的街道
Rank: 1
等 级:新手上路
帖 子:374
专家分:0
注 册:2008-10-24
收藏
得分:0 
外循环无用,复杂度T(n)
2008-11-14 11:26
网易
Rank: 1
来 自:金星
等 级:禁止访问
帖 子:193
专家分:0
注 册:2008-6-10
收藏
得分:0 
一般是计算  最内层循环的 那个对程序总运行时间贡献最大的 操作 的 执行次数

CPU的处理能力一般是每秒执行百万条指令   两者对照一下就可以粗略估计程序的运行时间

你可以试试估计一下汉诺塔(64层)程序的运算时间 2^64-1
2^10≈10^3  2^64≈16*10^18=16*10^12*10^6=310*16世纪
//执行10^6次条指令需1秒  10^8秒≈3.1年  10^10秒 ≈ 3.1世纪

[[it] 本帖最后由 网易 于 2008-11-14 12:55 编辑 [/it]]

答案是:雨中飞燕!
2008-11-14 11:50
animation
Rank: 2
等 级:论坛游民
帖 子:34
专家分:20
注 册:2008-11-13
收藏
得分:0 
我承认我是菜鸟,算复杂度只想到求循环次数,而且是能看懂程序的前提下

算法复杂度.jpg (105.25 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册

只要功夫深铁杵磨成针
2008-11-14 12:45
iFreeBSD
Rank: 4
等 级:业余侠客
威 望:4
帖 子:474
专家分:236
注 册:2007-11-5
收藏
得分:0 
书上讲得很清楚也很详细。大O的定义和在数学分析中的定义是一样的。

without further ado, let’s get started
2008-11-14 15:04
liqiangzk982
Rank: 2
等 级:论坛游民
帖 子:50
专家分:16
注 册:2006-12-20
收藏
得分:0 
O(n)

菜鸟我最大!
2008-11-14 17:45
renhongjun
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-11-10
收藏
得分:0 
void fun(int n)
{
    int i=0,j;
    do
    {
        for (j=0;j<n;j++)
            i+=j;   
    }while (i<n+1);
}
大哥,这程序好像太那个了
设n=4
循环
1 j=0
2 j<4
3 i=0+0
4 j=1
5 j<4
6 i=0+1
7 j=2
8 j<4
9 i=1+2
10 j=3
11 j<4
12 i=3+3
13 j!<4
退出for循环
i=6!<(n+1)=4
do循环只做了一次
这是啥意思
2008-11-14 17:47
网易
Rank: 1
来 自:金星
等 级:禁止访问
帖 子:193
专家分:0
注 册:2008-6-10
收藏
得分:0 
[bo][un]风居住的街道[/un] 在 2008-11-14 11:26 的发言:[/bo]

外循环无用,复杂度T(n)

还没见过用T(n)表示复杂度的  T(n)表示时间的吧

O(g(n)) ⊙(g(n))  Ω(g(n))  都见过了  不过很少见人用

答案是:雨中飞燕!
2008-11-14 18:25
快速回复:如何计算一个算法的时间复杂度
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022676 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved