标题:关于算法的时间复杂度
取消只看楼主
forice
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2005-8-25
 问题点数:0 回复次数:0 
关于算法的时间复杂度
看了一些书,大致明白了一点点有关时间复杂度,想在这里请教各位。

比如说
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-92683-1-1.html




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

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