时间复杂度与空间复杂度

本文详细介绍了时间复杂度和空间复杂度的概念,通过O渐进表示法阐述了它们的重要性。文中以二分查找法、斐波那契数列的递归与循环实现为例,分析了不同算法的时间复杂度和空间复杂度,揭示了递归算法的效率问题,并探讨了尾递归如何优化空间复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

度量算法的效率时就会提到时间复杂度和空间复杂度。
在谈时间复杂度之前我们先介绍一个O渐进表示法。
一、什么是O渐进表示法
一个算法语句总的执行次数总是关于问题规模N的某个函数,记为f(N),N称为问题的规模。语句总的执行次数记为T(N),当N不断变化是,T(N)也在变化,算法执行次数的增长速率和f(N)的增长速率相同。则有T(N)=O(f(N)),称O(f(N))为时间复杂度O的渐进表示法。
一般算法O(n)的计算方法:
先找次数
O( 次数)
用常数1取代运行时间中的所有常数
保留最高阶
丢掉常数C
二、时间复杂度
一个算法语句总的执行次数总是关于问题规模N的某个函数,记为f(N),N称为问题的规模。语句总的执行次数记为T(N),当N不断变化是,T(N)也在变化,算法执行次数的增长速率和f(N)的增长速率相同。则有T(N)=O(f(N)),称O(f(N))为时间复杂度O的渐进表示法。
三、空间复杂度
函数中创建对象的个数关于问题规模函数表达式,一般情况下用O的渐进表示法表示。
我们下来计算一下常见程序的时间复杂度和空间复杂度
二分查找法

int binary_search(int arr[], int key, int sz)
{
       int left = 0;
       int right = sz - 1;
       int mid = 0;
       while (left <= right)
       {
        mid = left + (right - left) / 2;
              if (arr[mid] == key)
           
博客
v8worker
05-08 2958
05-06 2941
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值