| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1144 人关注过本帖
标题:分析程序段的时间复杂度
只看楼主 加入收藏
一雨点
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-9-20
收藏
 问题点数:0 回复次数:1 
分析程序段的时间复杂度
   int a[]={10,2,9,7,3,6,4,1}
   order(int j,int m)
   {
    int i,temp;
    if(j<m)
     {
      for(i=j+1;i<=m;i++)
         if(a[i]<a[j])
           {
               temp=a[i];
               a[i]=a[j];
               a[j]=temp;
            }
            j++;
            order(j,m);
       }
    }            这个题的时间复杂度是什么?那位高手详细解答一下
搜索更多相关主题的帖子: 时间 
2011-09-20 13:03
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
我们假设执行每一基本步骤所需要的时间为一常量,第i步的执行时间可以用ci来表示,这样一来,如果知道每一行会被执行多少次就能知道每一行的执行时间
根据你的函数,可以设n=m-j,这就是输入规模,每一行执行时间按照c1,c2,c3,……来表示,下面的代码执行的基本时间和每行语句执行的次数可以表示如下:(值得注意的是,循环中for和while行的语句会多执行一次,因为要判断不能进入循环的那一个量)
用T(n)表示某个函数彻底完成的执行时间,意味着递归调用知道最后结果出来才算是彻底完成
                                    基本时间               次数
int a[]={10,2,9,7,3,6,4,1}            c1                    1
order(int j,int m)                    T(n)        
{
    int i,temp;                       c2                    1
    if(j<m)                           c3                   1
    {
        for(i=j+1;i<=m;i++)           c4                    n+1
            if(a[i]<a[j])             c5                    n
            {
               temp=a[i];             c6                    n
               a[i]=a[j];             c7                    n
               a[j]=temp;             c8                    n
             }
        j++;                          c9                    1
        order(j,m);                   T(n-1)
     }
}

这样,函数order的执行时间就可以表示为
T(n)=T(n-1)+(c2+c3+c4+c9)+(c4+c5+c6+c7+c8)n
用渐近式表示为T(n)=T(n-1)+O(n)的时间,其中O(n)表示为an+b的时间关系
递推T(n)式可以得到
T(n-1)=T(n-2)+O(n-1)
T(n-2)=T(n-3)+O(n-2)
可以看出,如果n的值非常大的话,O(n-1)和O(n)没多大区别,所以T(n)的时间复杂度可以表示为O(n^n),n的n次方的时间复杂度,在大数据量的情况下实在是不可取

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-10-02 22:03
快速回复:分析程序段的时间复杂度
数据加载中...
 
   



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

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