- 算法---程序的灵魂
一个程序主要包括以下两方面的信息:
(1) 对数据的描述。在程序中要指定用到哪些数据以及这些数据的类型和数据的组织形式
这就是数据结构(data structure)
(2) 对操作的描述。即要求计算机进行操作的步骤
也就是算法(algorithm)
算法 + 数据结构 = 程序
广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”
对同一个问题,可以有不同的解题方法和步骤
为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法
- 计算机算法可分为两大类别:
数值运算算法
非数值运算算法
数值运算的目的是求数值解
非数值运算包括的面十分广泛,最常见的是用于事务管理领域
- 简单的算法举例
例2.1 求1+2+3+4+5
可以用最原始的方法进行:
步骤1:先求1+2,得到结果3。
步骤2:将步骤1得到的和3再加上3,得到结果6
步骤3:将6再加上4,得10。
步骤4:最后将10再加上5,得上15。这就是最后的结果。
如果从1+2+…+100呢?
改进的算法:步骤1:定义变量sum并赋值为0。
步骤2:定义一个循环变量i并赋值为1
步骤3:判断循环变量是否小于等于5,如果条件成立,将sum与i相加并将结果赋给sum,否则运算结束,跳到步骤5 。
步骤4:循环变量自增1,跳到步骤3 。
步骤5:得到sum的总和值
- 再次改进的算法:
- 算法的特性
一个有效算法应该具有以下特点:
(1) 有穷性。一个算法应包含有限的操作步骤,而不能是无限的。
(2) 确定性。算法中的每一个步骤都应当是确定的,而不应当是含糊的、模棱两可的。
(3) 有零个或多个输入。所谓输入是指在执行算法时需要从外界取得必要的信息。
(4) 有一个或多个输出。算法的目的是为了求解,“解” 就是输出。没有输出的算法是没有意义的。
(5) 有效性。算法中的每一个步骤都应当能有效地执行,并得到确定的结果。例如:a/b,如果
b=0就不能有效地执行
- 流程图表示表示法
- 例如将求1×2×3×4×5的阶乘用流程图表示
一个流程图包括以下几部分:
(1) 表示相应操作的框
(2) 带箭头的流程线
(3) 框内外必要的文字说明
流程线不要忘记画箭头,否则难以判定各框的执行次序
- 三种基本结构和改进的流程图
(1) 顺序结构
(2) 选择结构
(3) 循环结构
① 当型循环结构
② 直到型循环结构
以上三种基本结构,有以下共同特点:
(1) 只有一个入口
(2) 只有一个出口
一个判断框有两个出口
一个选择结构只有一个出口
(3) 结构内的每一部分都有机会被执行到。也就是说,对每一个框来说,都应当有一条从入口到出口的路径通过它
(4) 结构内不存在“死循环”
- 由三种基本结构派生出来的结构:
- 用N-S流程图表示算法
N-S流程图用以下的流程图符号
- 用伪代码表示算法
伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法
用伪代码写算法并无固定的、严格的语法规则,可以用英文,也可以中英文混用
例如求5!用伪代码表示算法例如求5!用C语言表示
#include
int main( )
{
int i,t;
t=1;
i=2;
while(i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?