a*算法的时间复杂度_数据结构与算法系列——时间、空间复杂度

数据结构和算法本质就是帮我们用最快的时间和最少的空间来执行我们的代码。所以,执行效率是衡量一个算法的非常重要的指标。那如何来计算你的算法代码的执行效率呢?这就需要时间、空间复杂度来分析了。

有人可能会说,我把代码执行一遍,然后通过统计、监控就能知道执行的时间和需要的内存大小。干嘛还需要时间、空间复杂度来分析呢?我都能得到具体需要的时间和内存了,还需要多此一举吗?

首先,这种评估算法效率的方法没有问题,我们还给这种方法起了一个名字,叫事后统计法。但是这种方法有很大的局限性。

1. 测试结果受测试环境影响

测试环境的硬件对测试结果有非常大的影响。比如,同样的代码在i7和i5的机器上执行,结果肯定是不同的。还有可能在一台机器上A代码比B代码执行速度要快,我们换另外一台机器却得到相反的结果。

2. 测试结果受数据规模的影响

比如排序算法,原始数据如果有序度不一样,执行的时间就会有很大的差别。原始数据规模的大小不同,也可能会让原来速度快的算法变成速度慢的。

所以我们就需要一个不需要具体的测试数据来测试,就可以大概估算出执行效率的方法,就是时间、空间复杂度分析方法。

大O复杂度表示方法

我们通过度代码,来估算出它执行所需要的时间,下边来看一段具体的代码。

public int Function(int n)
{
    int sum = 0;
    for(int i = 1; i <= n; i++)
    {
        sum += i;
    }
    return sum;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值