【数据结构笔记-1.2】算法的定义

1.2.1 算法的定义

1. 算法:

·有限指令集
·接受一些输入
·产生至少一个输出
·有限步骤终止
·每一条指令必须
	1)充分的目标;
	2)没有歧义
	3)描述应该不依赖于任何一种计算机语言;

例1:选择排序算法:

在这里插入图片描述
上面具体的描述细节,算法不关心。

2. 什么是好的算法?

在这里插入图片描述
递归函数的空间复杂度更高。
例子:在这里插入图片描述
两个算法那个好?
1)计算机运行乘除法比加减法速度慢很多,不在一个数量级;
所以,我们去计算一下哪个乘法数量多:
在这里插入图片描述
因此,在分析一般算法效率的时候,我们经常关注下面两种复杂度:
1)最坏情况的复杂度
2)平均复杂度
在这里插入图片描述
通常,我们最关心最坏复杂度,因为这个平均复杂度,我们很难去定义它。

3.复杂度的渐进表示法

在这里插入图片描述
注意:在对于O和Ω,上界和下届不是唯一,但是过大的上界和过小的下届,没意义,所以说,我们通常写的是能力范围内能找到的最大下界和最小上界。

感性理解:

在这里插入图片描述
在这里插入图片描述
注意,算法题中,一旦出现n方的算法,一定思考一下,能不能降成nlogn

时间表(一些换算):
在这里插入图片描述

小窍门

  1. 两端算法并列和嵌套:
    在这里插入图片描述

  2. 最大项法则:

在这里插入图片描述
3. for循环分析:
在这里插入图片描述
4. if-else结构:取三者判断的最大复杂度
在这里插入图片描述

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值