数据结构:时间复杂度和空间复杂度

本文探讨了衡量算法效率的两个关键指标——时间复杂度和空间复杂度。时间复杂度关注算法在最差情况下的运行次数,如冒泡排序的O(N^2),而空间复杂度则关注算法所需的额外空间,例如递归算法的空间复杂度可能为O(N)。通过大O渐进表示法,可以简洁地描述这些复杂度。
摘要由CSDN通过智能技术生成

衡量一个算法:复杂度:时间复杂度+空间复杂度
算法效率分析:第一种时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称为空间复杂度。时间复杂度主要衡量一个算法的运行速度,而空间复杂度主要衡量一个算法需要的额外空间。

时间复杂度

函数中某条语句相对于问题规模N(参数、输入)的数学表达式;

  • 时间复杂度关注的是最差的情况;
  • 时间复杂度没有参考算法运行时间的长短,而是使用基本语句的运行次数
    一般情况
    代码中有一个循环----->O(N)—查找元素
    代码中有两个嵌套的循环---->O(N^2)—冒泡排序
    具体以算法为准

有些算法中:
1.二分查找:O(logN)
2.递归:递归的总次数*每次递归的基本语句运行次数

算法的时间复杂度存在如下几种情况:

  1. 最坏情况:任意输入规模的最大运行次数(上界)
  2. 平均情况:任意输入规模的期望运行次数
  3. 最好情况:任意输入规模的最小运行次数(下界)

例如:在一个长度为N的数组中查找数据X
最好情况:1次找到
最差情况:N次找到
平均状况:N/2次找到

大O渐进表示法

  1. F(N)是一个常数O(1);
  2. F(N)由多个子项组成,只取最高项;
  3. 若最高阶项的系数是不是1,将其改为1;
  4. 时间复杂度:计算的是最优平均速率、最差的情况;

常见的时间复杂度计算举例

  1. 分析以下程序的时间复杂度( )

for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
a[i][j]=i*j;
A、O(n)

B、(n^2)

C、O(nlogn)

D、O(logn)

  1. 分析以下函数的时间复杂度( )

void fun(int n) {
int i=l;
while(i<=n)
i=i*2;
}
A、O(n)

B、O(n^2)

C、O(nlog2n)

D、O(log2n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值