数据结构与算法基础——第01周-算法与算法解析4(1.7)

一 平均时间复杂度

有的情况下,算法中基本操作重复执行的次数还随问题的输入数据集不同而不同

例:顺序查找,在数组a[i]中查找值等于e的元素,返回其所在的位置
for(i=0;i<n;i++)
	if(a[i]==e)return i+1;//找到,则返回是第几个元素
return 0;	
  • 最好情况:1次
  • 最坏情况:n
  • 平均时间复杂度为:O(n)

二 时间复杂度说明

  • 最坏时间复杂度:指在最坏情况下,算法的时间复杂度
  • 最好时间复杂度:指在最好情况下,算法的时间复杂度
  • 平均时间复杂度:指在所有可能输入实例在等概率出现的情况下,算法的期望运行时间

一般总是考虑在最坏情况下的时间复杂度,以保证算法的运行时间不会比它更长

三 计算时间复杂度规则——加法规则和乘法规则

对于复杂的算法,可以将它分成几个容易估算的部分,然后利用大O加法法则和乘法法则,计算算法的时间复杂度

3.1 加法规则

T(n)+T1(n)+T2(n)=O(f(n))+O(g(n))=O(max(f(n),g(n)))

3.2 乘法规则

T(n)+T1(n)xT2(n)=O(f(n))xO(g(n))=O(max(f(n)xg(n)))

四 算法效率的比较

4.1多项式算法时间比较

nf(1)f(logn)f(nlog)f(n2)f(n3)f(2n)f(n!)
11001121
21124842
412416641624
81386451225640320
1614242564096655362.0923E+13
32151601024327684.295E+092.6313E+35

4.2 多项式的递增顺序

常数阶对数阶线性阶线性对数阶平方阶立方阶K次方阶指数阶
O(1)O(log2n)O(n)O(nlog2n)O(n2)O(n3)O(nk)O(n2n)

五 空间复杂度

5.1 概念

空间复杂度
  • 空间复杂度:算法所需存储空间的度量
  • 记作:S(n)=O(f(n)),其中n为问题的规模(或大小)
算法要占据的空间
  • 算法本身要占据的空间,输入/输出,指令、常数、变量等
  • 算法要使用的辅助空间

5.2 示例

示例一

将一维数组a中的n个数逆序存放到原数组中

【算法1】
for(i=0;i<n/2;i++)
  t=a[i];
  a[i]=a[n-i-1];
  a[n-i-1]=t;

说明:S(n)=O(1),原地工作

【算法2】
for(i=0;i<n/2;i++)
	b[i]=a[n-i-1];
for(i=0;i<n;i++)
	a[i]=b[i];

说明:S(n)=O(n);

六 设计好算法的过程

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值