算法简介

  1. 算法简介

学习内容:

  1. 该如何定义算法?
  2. 那接下来,算法的特性有哪4大方面?
  3. 我们可以开始设计算法了,但是算法设计有什么要求呢?
  4. 算法设计完成之后怎么有什么方法来度量效率呢?
  5. 算法的时间复杂度和空间复杂度
  1. 算法的定义

解决特定问题求解步骤的描述(类似于数学的解答题,每一个问题对应一种或者多种方法,存在一定的最优性),在计算机中表现为指令的有限序列(数学解答过程肯定是有限的过程),并且每条指令表示一个或多个操作。

       2.算法的特性

2.1输入输出

2.2有穷性

2.3确定性

2.4可行性

     3.算法的设计要求(如同作答数学题的步骤)

3.1正确性

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

大体分为如下四个层次:

  1. 算法程序没有语法错误
  2. 算法程序对于合法的输入数据能够产生满足要求的输出结果
  3. 算法程序对于非法的输入数据能够得出满足规则的说明结果
  4. 算法程序对于精心选择的,甚至刁难的测试都是满足要求的输出结果。

对于这4层的含义,层次1要求最低——满足语法正确如同温饱,离幸福生活差远了。层次4要求最困难。

算法的正确性在大部分情况下都不可能用程序来证明,而是用数学方法证明的。证明一个复杂算法在所有层次都是正确的需要太大的代价,因此通常以层次3为标准。

3.2可读性

便于阅读、理解和交流。

3.3健壮性

输入数据不合法时,算法也能做出相关处理,而不是产生异常或莫名其妙的结果。

3.4时间效率高和存储量低

时间效率:算法的执行时间       

存储量:算法程序运行时所占的内存或外部硬盘存储空间

4.算法效率的度量方法

4.1事后统计方法

4.2事前分析估算法

主要因素:

  1. *算法采用的策略、方法
  2. 编译产生的代码质量——软件支持
  3. *问题的输入规模
  4. 机器执行指令的速度——硬件支持

算法运行时间:重要的是把基本操作的数量与输入规模关联起来,及基本操作(加减乘除)的数量必须表示输入规模的函数。

5.函数的渐近增长(说白了就是增长速率的问题)

6.*算法时间复杂度(重要)和空间复杂度

6.1 算法时间复杂度定义

6.2 推到大O阶方法

6.3常数阶

6.4线性阶

6.5对数阶

6.6平方阶

6.7常见的时间复杂度——排序

6.8最坏情况与平均情况来

6.9算法空间复杂程度

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值