时间复杂度、空间复杂度的计算。

<1.>时间复杂度:

如下代码:

for(i = 0;i<n;i++)
{
    for(j = 0;i<n;j++)
        {
            count++;
        }
}
int a = 10;
while(a--)
{
count++;
}

基本操作执行了n*n+10次,但是随着n的增加,10对其影响微乎其微,所以这个程序的时间复杂度是O(n^2),所哟第一条原则:保留老大哥。

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

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

该代码执行了n+n=2*n次,但是时间复杂度是O(n),所以第二条原则:系数为1。

for(i = 0;i<100;i++)
{
    count++;
}

该代码执行了100次,but,时间复杂度是O(1),所以第三原则:常数为1。

int fun(int n)
{
    return n<2?n:n*fun(n-1)
}

改代码执行的是阶乘的递归运算,要进行n次递归,所以时间复杂度是O(N)。

再就是冒泡排序,由他的原理可以知道,冒泡排序是前一个和后一个相比较,第一次比较n-1次,第二次是n-2次……最后一次是比较一次,所以时间复杂度是次数的求和,根据保留老大哥原则,时间复杂度就应该是O(n^2)

所以我们得出一个结论,时间复杂度和几层循环没有必然联系,两层循环不一定就是O(N^2),例如快速排序,时间复杂度就是O(N),但是他是双循环。

再就是二分查找,显然是一个对数阶,记为O(logN)。

以上常见时间复杂度相关问题就介绍完了。

<2.>再者就是空间复杂度。还是这个代码段。

for(i = 0;i<n;i++)
{
    for(j = 0;i<n;j++)
        {
            count++;
        }
}
int a = 10;
while(a--)
{
count++;
}

他在内存中开辟了i j count a四个变量,然而空间复杂度应该是O(1),所以综上与时间复杂度类似。

显然再内存中开辟一个长度为n的数组的和比如5个变量,但是空间复杂度应该是O(N),所以这一点与时间复杂度相似。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值