算法时间复杂度和空间复杂度

独立于机器的软,硬件系统,一个算法的时间复杂度就是该算法中所有语句的频度之和,用T(n)表示,其中n为为问题的规模。

例如 求两个n 阶矩阵的乘积C=A*B ,其算法如下:



                               void MatrixMultiply(int A[n][n],int B[n][n],int C[n][n])

                         {

                                int i,j,k;

                        ①      for(i=0;i<n;i++)                         //n+1

                        ②        for(j=0;j<n;j++)                    //n(n+1)

                                    { 

                        ③             c[i][j]=0;                         //  n*n

                        ④               for(k=0;k<n;k++)          //n*n(n+1)

                        ⑤                  c[i][j]=C[i][j]+A[i][k]*B[k][j];//n*n*n

                                    }

                         }

分析:语句①  的循环控制变量i 要测试到i 等于n 成立才会终止,故它的频度是n+1,但是的它的循环体只执行了n次。同理可得②~ ⑤ 的频度分别是n(n+1), n*n,n*n(n+1),n*n*n。所以,该算法中所有语句的频度之和即为时间复杂度:

                     T(n)=2n*n*n+3n*n+2n+1

 

 

  算法空间复杂度是指:算法在执行过程中,除代码本身和输入,输出数据所占据的空间

 

外,临时开辟的存储空间,即辅助空间的数量级。一般来说,它也是问题空间n的函数。

 

当n趋向无穷大时,空间复杂度S(n) 的数量级(阶)称为算法的渐进空间复杂度,简称为空间复杂度

,记作

                                     S(n) =o(f(n)) 

 

 算法复杂度是算法时间和空间复杂度的统称。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值