数据结构-2算法和时间复杂度

什么是算法?

对问题求解步骤的描述,通过有限序列的指令来实现

特征:

  1. 有穷性:有限,不重复循环
  2. 确定性:每个步骤都是明确无歧义的
  3. 可行性:计算机能实现的算法
  4. 输入:被计算机处理的各种类型数据
  5. 输出:计算机处理后输出的结果

算法的复杂度

时间复杂度

用于衡量当问题规模不断增大,算法执行时间增长的快慢。记作T(n),则时间复杂度主要分析T(n)的数量级。T(n)=O(f(n)),大O记法,f(n)是算法中基本运算的频度,一般考虑最坏情况下的时间复杂度

计算方法:取算法中时间增长最快的那个函数项,把它的系数改为1

 

空间复杂度

用于衡量算法随着问题规模增大,算法所需空间的增长的快慢,S(n)=O(g(n))

 

时间复杂度大小关系:

O(1)<O(log2n)<O(nlog2n)<O(n^2)<O(n^3)<O(2^n) 从左至右,时间性能依次降低

 

复杂度的计算

时间复杂度:

复杂度是关于增长率的,所以直接忽略常数项,只关注问题规模

一般可以直接关注循环段基本操作语句的执行次数

1)单个循环体:

直接关注循环体的执行次数

2)多个循环体:

运算规则:乘法规则,加法规则

两个循环体是独立的,采用加法规则:T(n)=T1(n)+T2(n)=max(T1(n),T2(n))

两个循环体是嵌套的,采用乘法规则:T(n)=T1(n)*T2(n)

 

空间复杂度:

算法运算过程中使用的辅助空间的大小

S(n)=O(f(n))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值