数据结构 学习笔记 算法

算法的含义:一般而言,算法是一个有限的指令集,它接收一些输入(有些情况下不需要输入),产生输出,并一定在有限步骤之后终止。

算法的特征有哪些:1、每一条指令必须有充分明确的目标,不可以有歧义;2、必须在计算机能处理的范围之内;3、其描述应不依赖任何一种计算机语言以及具体的实现手段。

注意:算法不是程序。程序可以无限运行(例如操作系统),但算法必须在有限步后终止。

衡量、比较算法优劣的指标主要有以下两个:

  1. 空间复杂度S(n):根据算法写成的 程序在执行时占用存储单元的长度。

这个长度通常与输入数据的规模有关。

空间复杂度过高的算法可能导致使用的内存超限,造成程序非正常中断。

  1. 时间复杂度T(n):根据算法写成的 程序在执行时耗费的长度。

这个长度通常与输入数据的规模n有关。

时间复杂度过高的低效算法会导致等不到结果。

计算机在 一个函数A 内部处理 另一个函数B 的调用时,必须先把A的当前状态保存在内存中,当B被调用完成后,再释放内存恢复状态,继续执行A的其余语句。

在分析一般算法的效率时,我们经常关注两种复杂度:

(1)最坏情况复杂度(n);

(2)平均复杂度(n);

在给定的算法做渐进分析时的技巧:

1、若两段算法分别有复杂度,那么

(1)两段算法串联在一起的复杂度,即比较慢的那个算法决定了串联后的效率;

(2)两段算法嵌套在一起的复杂度

2、若T(n)是关于n的k阶多项式,那么T(n)=O()。

  1. 一个for循环的时间复杂度 等于 循环次数 乘以 循环体代码的复杂度。

  1. 若干层嵌套循环的时间复杂度 等于 各层循环次数的乘积 再乘以 循环代码的复杂度。

  1. if-else结构的复杂度 取决于 if的条件判断复杂度 和 两个分支的复杂度,总体复杂度取三者中最大。即对结构

if(P1) /* P1的复杂度为O()*/

P2; /*P2的复杂度为O()*/

else

P3; /*P3的复杂度为O()*/

总复杂度为max(O(),O(),O()。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

与自己赛跑

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

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

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

打赏作者

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

抵扣说明:

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

余额充值