大话数据结构---第二章 算法

1、算法的概念

算法,这个概念听起来很高深的样子,如果你在面试时也提到这个概念,面试官会认为你很专业,那么算法究竟是什么呢?

算法其实很简单,平时我们在编程的过程中常与算法打交道,不过写的算法是好还是坏。

按照本书的解释,算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限系列,并且每条指令表示一个或多个操作。

说直白一点就是我们解决问题的过程就是一个算法。

算法有好有坏,比如用高斯求和 与循环遍历都能获取到正确的求和值。但是性能上我们一目了然。

 

2 开场白

既然本书是数据结构,为啥还介绍算法,通过读该文,感受到数据机构和算法两个具有紧密的联系,因为在解决问题时,我们的目的是更好的解决问题,所以会在考虑算法的基础上选择合理的数据结构。

 

3 算法的特性

输入、输出、有穷性、确定性和可行性;

 

有穷性:算法在执行指定的步骤后,自动结束,而不会出现无限循环。

确定性:相同的输入,输出的结果必然相同;

可行性:算法的每一步都是可行的,也就是执行有限步骤都能结束;

4 算法设计要求

 正确性、可读性、健壮性、时间效率高,存储量低

5 算法效率的度量方法

5.1 事后统计法

5.2 事前分析估算法

6 算法的渐进增长

也就是分析的是算法的执行次数与执行规模之间的关系。执行次数关系函数对应为f(n)= 2n+5  与g(n)= 3n+1  那个算法更好呢?

7 算法的时间复杂度

算法的时间复杂度定义:

算法分析时,语句总的执行次数为T(n) 是关于问题规模n 的函数,进而分析T(n) 随n的变化情况并确定T(n)的数量级。

算法的时间复杂度,也就是算法的时间度量。T(n)=O(f(n)),表示的是随问题规模的扩大,算法执行的时间增长率和f(n)的相同。

推导大O阶方法

 常数阶  :也就是不随问题规模的扩大而扩大,即 O(1)

线性阶:也就是与问题规模为线性关系,即 O(n)

对数阶:执行次数与问题规模为对数关系,即 O(log(n))

平方阶: 也就是与问题规模为平方的关系,即O(n^2

立方阶:也就是与问题规模为平方的关系,即O(n^3

指数阶:也就是与问题规模为平方的关系,即O(2^n

时间耗费的长短顺序为:

O(1)<O(log(n))<O(n)<O(nlog(n))<O(n^2)<O(n^3)<O(2^n)<O(n!) <O(n^n

所以在设计算法的时候,尽量是往左靠。

8 算法空间复杂度

算法的空间复杂度是通过算法所占的空间来计算的,

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coder_jt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值