数据结构-第二章算法

第二章:算法

是解决特定问题的求解步骤的描述,计算机指令的有限序列。
Algorithm特性:
有穷性、确定性、可行性、输入和输出;

算法的特性:

  • 输入输出
    至少一个输出、可以没有输入;例如print

  • 有穷性
    算法执行步骤是有限的,自动结束而不会死循环。
    且每一个步骤的执行时间都是可接受的。
    边界性;

  • 确定性
    算法的每一步都具有确定的含义,不会有二义性;
    只有一条执行路径;

  • 可行性
    算法的每一步都是可以在执行有限次数后完成;
    可以得到结果;

算法的要求

  • 正确性
    能够正确的反映问题的需求,能够得到问题的正确答案;
    具有输入、输出和加工处理无歧义;

正确的层次:
1. 没有语法错误
2. 算法对于合法的输入,可以产生满足要求的结果
3. 非法数据可以得出满足规格说明的结果

  • 可读性
    算法设计就是为了便于阅读、交流。

  • 健壮性
    当输入数据不合法时,也能做出相关处理。

  • 时间效率高和存储量低

算法效率的度量

利用计算机的计时功能,计算不同算法的效率。

  • 事后统计
    利用设计好的测试程序和数据,对不同算法编制的程序的运行时间进行比较。
    缺点:
    必有得有程序代码,算法写的不好,程序毫无意义。
    计算机环境造成结果差异
    测试数据设计困难

  • 事前分析
    程序代码编写前,依据统计方法对算法进行估算。
    一个程序的运行时间,依赖于算法的好坏和问题的输入规模。
    分析程序运行时间,最重要的是把程序看成独立于程序设计语言的一系列步骤。
    说白了: 就是程序执行一条指令的时间 乘以 程序的指令数 得到的就是程序运行时间。而分析一个算法的好坏就是 通过分析输入数据的量和运行时间的关系函数 得到一个时间效率问题。
    都是一些简单数学问题,自己百度一下就明白。

算法的时间复杂度

定义(描述):随着算法的输入数据量n的增加,算法操作数f(n)随之增加,而时间量度T(n)也在正比增加。
最优算法,就是T(n)增加最慢的。

常用时间复杂度:
在这里插入图片描述

算法的空间复杂度

指计算算法的所需的存储空间。S(n)。
程序执行时,除了存储程序本身的指令、常数、变量和输入数据外,还需要存储对数据操作的存储单元。
如果输入数据所占空间只取决于问题本省,和算法无关,则只需要分析该算法在实现时所需的辅助单元即可。如辅助单元空间相对于输入数据量而言是个常数,此算法空间复杂度为:O(1)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值