【算法设计与分析】绪论

为什么要学算法

一、算法——程序的灵魂

二、提高分析问题的能力

算法及其重要特性

算法(Algorithm):对特定问题求解步骤的一种描述,是指令的有限序列。

输入:一个算法有零个或多个输入。

⑵ 输出:一个算法有一个或多个输出。

⑶ 有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。

⑷ 确定性:算法中的每一条指令必须有确切的含义,对于相同的输入只能得到相同的输出。

⑸ 可行性:算法描述的操作可以通过已经实现的基本操作执行有限次来实现。

算法的描述方法

 ⑴ 自然语言

优点:容易理解

缺点:冗长、二义性

使用方法:粗线条描述算法思想

注意事项:避免写成自然段

⑵ 流程图

优点:流程直观

缺点:缺少严密性、灵活性

使用方法:描述简单算法

注意事项:注意抽象层次

⑶ 程序设计语言

优点:能由计算机执行

缺点:抽象性差,对语言要求高

使用方法:算法需要验证

注意事项:将算法写成子函数

⑷ 伪代码——算法语言

伪代码(Pseudocode):介于自然语言和程序设计语言之间的方法,它采用某一程序设计语言的基本语法,操作指令可以结合自然语言来设计。

优点:表达能力强,抽象性强,容易理解 

算法设计的一般过程

1.理解问题

2.预测所有可能的输入

3. 在精确解和近似解间做选择

4. 确定适当的数据结构

5.算法设计技术

6.描述算法

7.跟踪算法

8.分析算法的效率

9.根据算法编写代码

渐进符号

大O符号

定义:设 f 和 g是定义域为自然数集N上的函数. 若存在正数 c 和 n0,使得对一切 n>=n0,有 0<=f(n)<=c g(n) 成立

则称 f(n) 的渐近的上界是 g(n), 记作f(n)=O(g(n))

大Ω符号

定义:设 f 和 g是定义域为自然数集

N上的函数. 若存在正数 c 和 n0,使得对一切 n>=n0,有 0<=cg(n)<=f(n)成立, 则称 f(n) 的渐近的下界是 g(n),记作f(n)=Ω(g(n))

小o符号

定义:设 f 和 g是定义域为自然数集 N上 的函数. 若对于任意正数 c 都存在 n0,使 得对一切 n <= n0,有0 <= f(n) < c g(n) 成立, 则

作f(n)=o(g(n)) 

小ω符号
定义:设 f 和 g是定义域为自然数集 N上

的函数. 若对于任意正数 c 都存在 n0,使得对一切 n<= n0,有0 <=cg(n) < f(n)成立, 则记作f(n)=ω(g(n))

θ符号

若 f (n) = O (g(n)) 且 f (n) = Ω (g(n)), 则记作f(n)=θ(g(n))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值