- 通俗的讲,算法可以理解为一个完整的解题步骤,由一些基本运算和规定的运算顺序构成
- 数据结构是数据的组织形式,可以用来表现特定的对象数据,再简单的来说数据结构就是关系,就是数据元素相互之间存在的一种或多种特定关系的集合,比如你有基友有朋友,这就是你自己的一种结构关系
-
数据结构分为逻辑结构和物理结构
- 逻辑结构:是指数据对象中元素之间的相互关系
- 物理结构:是指数据的逻辑结构在计算机中的存储形式
四大逻辑结构
- 集合结构:集合结构中的数据元素除了同属于一个集合外,不存在任何的关系
- 线性结构:数据元素之间是一对一的关系
- 树形结构:元素之间存在一种一对多的层次关系
- 图形结构:数据元素是多对多关系的
物理结构
- 根据物理结构的定义,实际上研究的就是如何把元素存储到计算机的存储器中(内存,硬盘...)
-
数据元素的存储结构形式有两种:顺序存储和链式存储
- 顺序存储:是把数据元素存放在地址连续的存储单元里,其数据间的逻辑关系和物理关系是一致的(数组)
- 链式存储:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的,链式存储结构的数据元素存储关系并不能反映其逻辑关系,因此需要用一个指针存放数据元素的地址,通过地址就可以找到相关联数据元素的位置
算法五个特性
- 有穷性:算法的指令或者步骤的执行次数是有限的,执行时间也是有限的
- 确切性:算法的每一个指令或者步骤都必须有明确的定义和描述,不会出现二义性,干啥就是干啥不能模糊
- 输入:一个算法应该有相应的输入条件,用来刻画运算对象的初始情况
- 输出:一个算法应该有明确的结果输出
- 可行性:算法的执行步骤必须是可行的,且可以在有限时间内完成
算法设计要求
-
正确性
- 算法程序没有语法错误
- 算法程序对于合法输入能够产生满足要求的输出
- 算法程序对于非法输入能够产生满足规格的说明
- 算法程序对于故意刁难的测试输入都有满足要求的输出结果
-
可读性
- 便于阅读,理解和交流
-
健壮性
- 当输入不合法的时候,算法也能作出相关处理,而不是产生异常或者莫名其妙的结果
- 时间效率高和存储量低:即执行快,内存消耗少
算法的表示
- 自然语言表示:即人们平时的口头语言,对一些简单算法,口头语言就可以讲述清楚
- 流程图表示
-
一般会采用三种流程结构
- 顺序结构
- 分支结构
- 循环结构
- 当型循环是先进行P条件的判断,然后执行A,一般是采用while语句来实现
- 直到型循环是先执行A,然后在判断P条件,一般采用do_while实现
- N-S图表示
-
伪代码表示:即结合语言和代码表示算法的一种形式,比如
a <- 输入 b <- 输入 if a>b max = a else max = b 输出 -> max