初识算法(时间与空间)

目录

初识算法

时间复杂度

线性阶

常数阶

指数阶

空间复杂度


初识算法

        算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度和时间复杂度来衡量。

        对于一个算法,其时间复杂度和空间复杂度往往是相互影响的。当追求一个较好的时间复杂度时,可能会使空间复杂度的性能变差,即可能导致占用较多的存储空间;反之,当追求一个较好的空间复杂度时,可能会使时间复杂度的性能变差,即可能导致占用较长的运行时间。

        简单来说,算法就是解决问题的具体步骤。就像数学中一个数学题有多种解题方法一样。在程序中,一个问题也往往对应着多种算法。虽然最终都可以解决问题,但有的效率高,有的效率低。因此我们在解决问题时要考虑最优的算法。通常是:以时间换空间以空间换时间

        最经典的方法:【大O符号表达式】

时间复杂度

        执行当前算法消耗的时间

        一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为O(n)。

线性阶

随着数组大小的变化,查询遍历的次数呈线性增长,则时间复杂度为O(n)。

常数阶

在各种不同算法中,若算法中语句执行次数为一个常数,则时间复杂度为O(1)。

指数阶

例如:冒泡排序。随着数组长度的变化,我们遍历的次数是指数级增长的。则时间复杂度为O(n^2)。

空间复杂度

        执行当前算法所占用的内存空间

比较各种算法额外占用的空间。

1、如果算法执行所需要的临时空间不随着某个变量n的大小而变化,则程序的空间复杂度用 O(1) 表示。

2、如果随着输入值 n 的增大,程序申请的存储空间成线性增长,则程序的空间复杂度用 O(n) 表示。

3、如果随着输入值 n 的增大,程序申请的存储空间成 n^2关系增长,则程序的空间复杂度用 O(n^2) 表示。

4、如果随着输入值 n 的增大,程序申请的存储空间成 n^3 关系增长,则程序的空间复杂度用 O(n^3) 表示。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值