| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1237 人关注过本帖
标题:关于算法的时间复杂度
只看楼主 加入收藏
forice
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2005-8-25
收藏
 问题点数:0 回复次数:4 
关于算法的时间复杂度
看了一些书,大致明白了一点点有关时间复杂度,想在这里请教各位。

比如说
for(int i=0;i<n;i++)
{
do...
}
这个的时间复杂度为o(n)吧?


for(int i=0;i<n;i++)
for(int j=0;j<n-1;i++)
{
do...
}
这个的时间复杂度为o(n^2)吧?(n 的平方)
再比如说一个折半查找算法:
void sort(int a[],int n,int x)
{
int left=1;
int right=n;
int mid;
int flag=0;
while((!flag)&&(left<=right))
{
mid=(left+right)/2;
if(x==a[mid])
{
printf("%d is the %d\n",x,mid);
flag=1;
}
else if (x>a[mid])
left=mid+1;
else right=mid-1;
}
}
这个的时间复杂是要怎么算的?
它跟for循环有什么关系没有?比如如果有三个for语句,是不是就是o(n^3)?
还有,那些时间复杂度为o(log n)的和o(2^n)的是什么样的算法呢?
搜索更多相关主题的帖子: 算法 int 时间 sort void 
2006-09-24 20:41
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
O(logn)

并不只看循环的个数,要看循环变量的变化情况.

倚天照海花无数,流水高山心自知。
2006-09-24 21:42
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
好似数据结构有讲。

谁有强殖装甲第二部,可以Q我460054868
2006-09-27 19:55
zhufeifei
Rank: 1
等 级:新手上路
威 望:2
帖 子:402
专家分:0
注 册:2006-8-11
收藏
得分:0 
  如果近似的估算时间复杂度的话,一般就是看循环了,其它的都是常数,影响不大,但是要更精确的算法时间复杂度,除了看循环的次数外还要看其它的.

在不断的拼搏与进取中,定能创造一片天地!
2006-09-28 10:24
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用zhufeifei在2006-9-28 10:24:24的发言:
如果近似的估算时间复杂度的话,一般就是看循环了,其它的都是常数,影响不大,但是要更精确的算法时间复杂度,除了看循环的次数外还要看其它的.

不能这样说,要看循环变量的变化.我举个例子.
简单查询语段.这里的时间复杂度上O(n)而不是O(n^2).
for(i=0;i<n;i++)
{
while(i<n&&a[i]!=x)
{
i++;
}
if(i<=n)
{
break;
}
}


倚天照海花无数,流水高山心自知。
2006-09-28 23:01
快速回复:关于算法的时间复杂度
数据加载中...
 
   



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

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