语言学习_程序的灵魂-算法
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
a A
a P
顺 序
b a
选 择
A B
B b a
A A
While 循环
b
p1
成立
until 循环
p2 b
不成立
开始 输入x,y,z x>y?? 真 交换x,y 假 假
x>z? 真 交换x,z y>z? 真 交换y,z 输出x,y,z 结束 对三个数进行排序
假
思考:试写出对任意 个数 按从小到大进行排序的算法. 个数, 思考:试写出对任意n个数,按从小到大进行排序的算法. 起泡排序(Bubble Sort) 起泡排序
第2章 程序的灵魂 算法 章 程序的灵魂----算法 数据结构(data structure):对数据的描述,指定数据的类型 数据结构 :对数据的描述, 和数据的组织形式.如数组,链表,二叉树等. 和数据的组织形式.如数组,链表,二叉树等. 算法(algorithm):对操作的描述,即操作的步骤.如排序, :对操作的描述,即操作的步骤.如排序, 算法 求最大值等. 求最大值等. 沃思(Nikiklaus Wirth)认为: 认为: 沃思 认为 数据结构+算法 程序 数据结构 算法=程序 算法 程序=算法 数据结构 程序设计方法+语言工具和环境 程序 算法+数据结构 程序设计方法 语言工具和环境 算法 数据结构+程序设计方法
s1:输入 输入4,2,1三个数 输入 三个数 s2:将4,2,1的值赋予数组 ,即x[0]=4,x[1]=2,x[2]=1 将 的值赋予数组x, 的值赋予数组 s3:如果 如果x[0]>x[1],则:k=x[0],x[0]=x[1],x[1]=k.否则转 否则转s4. 如果 , 否则转 s4:如果 如果x[1]>x[2],则:k=x[1],x[1]=x[2],x[2]=k.否则转 否则转s5. 如果 , 否则转 s5:如果 如果x[0]>x[1],则:k=x[0],x[0]=x[1],x[1]=k. 如果 , s5: 打印 打印x[0],x[1],x[2].结束. .结束.
有穷性
一个算法必须总是在执行有限个操作步骤和可以接受的 时间内完成其执行过程.也即是说,对于一个算法,要 求其在时间和空间上均是有穷的.
2.3 算法的特性
输入
一个算法有零个或多个输入数据.有些算法需要提供输入 数据,有些算法则不需要.
输出
一个算法应该有1个或多个输出数据.
– 算法应达到的目标
正确性 可读性 健壮性 高效率与低存储空间需求
2.4 怎样表示一个算法 2.4.1 用自然语言表示算法 2.4.2 用流程图表示算法 1. ANSI制定的常用流程图符号: 制定的常用流程图符号: 制定的常用流程图符号 起止框 处理框 流程线 连接点 判断框 赋值符号 图 2.3 流程图符号 注释框
输入输 出框
2.4.3 三种基本结构和改进的流程图 1. 传统流程图的弊端 2.三种基本结构 三种基本结构
例如,下面是用自然语言表示的对三个数进行从小到大排 序的算法. ① ② ③ ④ ⑤ 输入三个数x,y,z; 将x与y比较,若x>y,交换x与y的值; x y x y x y 将x与z比较,若x>z,交换x与z的值; 将y与z比较,若y>z,交换y与z的值; 输出此时的三个数x,y,z
算法示例: 算法示例: 有三个数字: , , ,按上述算法将其从小到大打印出来. 有三个数字:4,2,1,按上述算法将其从小到大打印出来. 算法描述: 算法描述:
第一次循环
n-1
1
2
3
4
5
6
7
8
9
......
n-4
n-3 n-2
n-1
n
第二次循环
n-2
1
2
3
4
5
6
7
8
9
......
n-4
n-3 n-2
n-1
n
2.4.4 用N-S流程图表示算法 流程图表示算法 1973年美国学者 年美国学者I.Nassi和B.shneiderman提出.N-S流程图 提出. 年美国学者 和 提出 流程图 的符号. 的符号.
4,2,1 , , 2,4,1 , , 2,1,4 , , 1,2,4 , ,
2.3 算法的特性 算法必须具有以下五个特性:
确定性
算法中的每一步都必ቤተ መጻሕፍቲ ባይዱ有确切的含义,不允许存在二义 性;对于相同的输入数据,必须有相同的输出结果.
可行性
算法中的每一步操作都能通过可以实现的基本运算,执 行有限次来完成,并最终得到确定的结果.
2.1 算法的概念 算法:对处理问题的逻辑步骤的描述. 算法:对处理问题的逻辑步骤的描述. 数值算法:方程求根,函数积分,各种数 数值算法:方程求根,函数积分, 学问题的数值解算法. 计算方法》 学问题的数值解算法.见《计算方法》或 数值分析》课程. 《数值分析》课程. 算法 非数值算法:常用于事务管理领域. 非数值算法:常用于事务管理领域.如排 查询等. 数据结构》课程. 序,查询等.见《数据结构》课程. 图 2.1 算法分类
A B P 成立 A 不成立 B
顺序
当p1成立 成立 A A
选择
直到p1成立 直到 成立
While 循环
until 循环
输入x,y,z x>y? Y 交换x,y x>z? Y 交换x,z y>z? Y 交换y,z 输出x,y,z 三个数进行从小到大排序 N N N
�
a P
顺 序
b a
选 择
A B
B b a
A A
While 循环
b
p1
成立
until 循环
p2 b
不成立
开始 输入x,y,z x>y?? 真 交换x,y 假 假
x>z? 真 交换x,z y>z? 真 交换y,z 输出x,y,z 结束 对三个数进行排序
假
思考:试写出对任意 个数 按从小到大进行排序的算法. 个数, 思考:试写出对任意n个数,按从小到大进行排序的算法. 起泡排序(Bubble Sort) 起泡排序
第2章 程序的灵魂 算法 章 程序的灵魂----算法 数据结构(data structure):对数据的描述,指定数据的类型 数据结构 :对数据的描述, 和数据的组织形式.如数组,链表,二叉树等. 和数据的组织形式.如数组,链表,二叉树等. 算法(algorithm):对操作的描述,即操作的步骤.如排序, :对操作的描述,即操作的步骤.如排序, 算法 求最大值等. 求最大值等. 沃思(Nikiklaus Wirth)认为: 认为: 沃思 认为 数据结构+算法 程序 数据结构 算法=程序 算法 程序=算法 数据结构 程序设计方法+语言工具和环境 程序 算法+数据结构 程序设计方法 语言工具和环境 算法 数据结构+程序设计方法
s1:输入 输入4,2,1三个数 输入 三个数 s2:将4,2,1的值赋予数组 ,即x[0]=4,x[1]=2,x[2]=1 将 的值赋予数组x, 的值赋予数组 s3:如果 如果x[0]>x[1],则:k=x[0],x[0]=x[1],x[1]=k.否则转 否则转s4. 如果 , 否则转 s4:如果 如果x[1]>x[2],则:k=x[1],x[1]=x[2],x[2]=k.否则转 否则转s5. 如果 , 否则转 s5:如果 如果x[0]>x[1],则:k=x[0],x[0]=x[1],x[1]=k. 如果 , s5: 打印 打印x[0],x[1],x[2].结束. .结束.
有穷性
一个算法必须总是在执行有限个操作步骤和可以接受的 时间内完成其执行过程.也即是说,对于一个算法,要 求其在时间和空间上均是有穷的.
2.3 算法的特性
输入
一个算法有零个或多个输入数据.有些算法需要提供输入 数据,有些算法则不需要.
输出
一个算法应该有1个或多个输出数据.
– 算法应达到的目标
正确性 可读性 健壮性 高效率与低存储空间需求
2.4 怎样表示一个算法 2.4.1 用自然语言表示算法 2.4.2 用流程图表示算法 1. ANSI制定的常用流程图符号: 制定的常用流程图符号: 制定的常用流程图符号 起止框 处理框 流程线 连接点 判断框 赋值符号 图 2.3 流程图符号 注释框
输入输 出框
2.4.3 三种基本结构和改进的流程图 1. 传统流程图的弊端 2.三种基本结构 三种基本结构
例如,下面是用自然语言表示的对三个数进行从小到大排 序的算法. ① ② ③ ④ ⑤ 输入三个数x,y,z; 将x与y比较,若x>y,交换x与y的值; x y x y x y 将x与z比较,若x>z,交换x与z的值; 将y与z比较,若y>z,交换y与z的值; 输出此时的三个数x,y,z
算法示例: 算法示例: 有三个数字: , , ,按上述算法将其从小到大打印出来. 有三个数字:4,2,1,按上述算法将其从小到大打印出来. 算法描述: 算法描述:
第一次循环
n-1
1
2
3
4
5
6
7
8
9
......
n-4
n-3 n-2
n-1
n
第二次循环
n-2
1
2
3
4
5
6
7
8
9
......
n-4
n-3 n-2
n-1
n
2.4.4 用N-S流程图表示算法 流程图表示算法 1973年美国学者 年美国学者I.Nassi和B.shneiderman提出.N-S流程图 提出. 年美国学者 和 提出 流程图 的符号. 的符号.
4,2,1 , , 2,4,1 , , 2,1,4 , , 1,2,4 , ,
2.3 算法的特性 算法必须具有以下五个特性:
确定性
算法中的每一步都必ቤተ መጻሕፍቲ ባይዱ有确切的含义,不允许存在二义 性;对于相同的输入数据,必须有相同的输出结果.
可行性
算法中的每一步操作都能通过可以实现的基本运算,执 行有限次来完成,并最终得到确定的结果.
2.1 算法的概念 算法:对处理问题的逻辑步骤的描述. 算法:对处理问题的逻辑步骤的描述. 数值算法:方程求根,函数积分,各种数 数值算法:方程求根,函数积分, 学问题的数值解算法. 计算方法》 学问题的数值解算法.见《计算方法》或 数值分析》课程. 《数值分析》课程. 算法 非数值算法:常用于事务管理领域. 非数值算法:常用于事务管理领域.如排 查询等. 数据结构》课程. 序,查询等.见《数据结构》课程. 图 2.1 算法分类
A B P 成立 A 不成立 B
顺序
当p1成立 成立 A A
选择
直到p1成立 直到 成立
While 循环
until 循环
输入x,y,z x>y? Y 交换x,y x>z? Y 交换x,z y>z? Y 交换y,z 输出x,y,z 三个数进行从小到大排序 N N N
�