时间复杂度与空间复杂度

一、为什么会有复杂度的概念

          在面临一个问题的时候,往往会有很多解决这个问题的方式。在计算机发展早期,内存和运算效率远不及现代的情况下,为了能充分利用内存和提高效率,有一个概念能衡量出某种解决问题方法的优劣,是很有必要的。

二、时间复杂度

          “在计算机科学中,时间复杂性,又称时间复杂度,算法的时间复杂度是一个函数,它定性描述该算法的运行时间”。其中有两个重要的点,1.时间复杂度是一个函数,此函数与我们在编程中的函数不同,它类似于我们在高中学的函数f(x),是通过某种含有未知数的表达式。2.它定性描述该算法的运行时间。但由于科技的发展,现在每台设备上的处理器都不同,这使得不同设备上的程序运行效率也不同,让在某台设备上所运行的时间参考价值不大。故以一个算法中语句的执行次数数,来进行比较,哪个算法中语句执行次数多,它花费时间就多,时间复杂度就高。

三、空间复杂度

         空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度,哪个算法在运行时所创建的临时变量多,谁的占用空间就越大。时至今日,由于摩尔定律摩尔定律是由英特尔(Intel)创始人之一戈登·摩尔(Gordon Moore)提出来的。其内容为:当价格不变时,集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍。换言之,每一美元所能买到的电脑性能,将每隔18个月翻两倍以上)的提出使得我们对于空间复杂度没有像对时间复杂度一样有那么高的追求。其中也还有另外一个原因,即空间是可以重复利用的,而时间不可以重复利用。这使得在与空间相比的情况下显得更加重要。

四、如何表示时间复杂度与空间复杂度

       我们通常使用O来表示复杂度,同时采取估算,也称“大O的渐进表示法”

       同时根据以下方法推到O()

  • 1、用常数1取代运行时间中的所有加法常数。
  • 2、在修改后的运行次数函数中,只保留最高阶项。
  • 3、如果最高阶项存在且不是1,则去除与这个项目相乘的常数。得到的结果就是大O阶。

例:

假如,我对算法进行分析, 并根据我的数学知识,算出某一算法的时间复杂度为

O(N + 5)

根据第一条我们可以将常数项替换成一,变为O( N + 1 ),同时假如N无限大,常数项对其复杂度的影响很小,可以将其估算为O(N)

O(N^2 + 2N)

同样,假如N无限大时,也可以将2N省略,写为O(N^2)

O(常数)

同上,可以直接写为O(1)

综上,对于某种算法的复杂度,我们不需要将其算的如何如何的精准,我们只需要了解其复杂度在哪一个阶级就可以,将其算的是否特别精准,无论是从它的意义或着用途来说,区别不大。对于复杂度的一些常见阶级可以看入下图

时间复杂度o(1), o(n), o(logn), o(nlogn)_这瓜保熟么的博客-CSDN博客_logn时间复杂度

还有一些常见算法的时间复杂度与空间复杂度

常见算法的时间复杂度_runner668的博客-CSDN博客_遗传算法时间复杂度

第一篇博客,若有不足,欢迎提出建议

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值