DS作业1--算法的时间复杂度

(1)

复杂度 O(1)

int sum = 0, n = 100;    
sum = (1+n)*n/2;         
cout<<sum;               

(2) 复杂度 O(n)
一个循环,执行n次


int i;                               

for( i = 0; i < n; i++){              

    cout<<i;                            

}

(3) 复杂度 O(log n)

while循环 count每次循环翻倍

循环的次数应该是log n吧,,,


int count = 1;  

while (count<n){

    count = count *2;   

    cout<<count;

}

(4) 时间复杂度 O(n^2)

嵌套循环 内外循环都n次

for(int i =0; i < n; i++){

    for(int j = 0; j < n; j++){

       cout<<"you are so nice~"<<endl;

    }
}

(5) 时间复杂度 O(m*n)

外循环m次 内循环n次

for(int i =0; i < m; i++){

    for(int j = 0; j < n; j++){

       cout<<"hello world~"<<endl;

    }

}

(6)复杂度O(n^2)

嵌套循环
外循环 n次
内循环(n-i)次

内循环共执行:n+(n-1)+…+1=((n+1)*n)/2次

for(int i =0; i < n; i++){    n次

    for(int j = i; j < n; j++){         ((n+1)*n)/2次

       cout<<"sunny day~"<<endl;

    }

}

(请先计算循环内的语句的执行次数,再给出时间复杂度大O表示)

(7)



n++;                //1执行1次       

function( n );    //2  执行1次

int i, j;

for (i=0; i<n; i++){ //3  i执行**n+1**次,    function(i)也执行了n+1次

    function(i);

}

for (i=0; i<n; i++){

    for(j=i; j<n; j++){     //4内循环,会执行(n-i)次,共执行了n+(n-1)+...+1= ((n+1)*n)/2次

        cout<<"DS Cool!"<<endl;

    }

}

整段代码时间复杂度:O(n^2)
请给出注释为1,2,3,4的三行代码的执行次数,并给出整段代码时间复杂度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值