程序=算法+数据结构
基本术语和常用概念
数据
是描述客观事物的数、字符以及能输入计算机中并被计算机处理的符号的集合。
数据元素
是数据的基本单位
数据对象
是具有相同性质的数据元素的集合,是数据的一个子集
数据元素是数据的基本单位,将各个属性相同的数据元素合并在一起,成为了数据对象,所有的数据对象放在一起就成为了数据。
数据结构包含的内容
数据结构
数据结构:是计算机存储、组织数据的方式。是指相互之间存在一种或多种特定关系的数据元素的集合。
三个方面
逻辑结构
逻辑结构:数据元素之间的逻辑(或抽象)关系;是从逻辑关系上描述数据的,与数据元素的存储结构无关,是独立于计算机的。
可以分为 线性结构 和 非线性结构 两大类。
线性结构 是最常用的数据结构,常见形式有 数组、队列、链表和栈 。
特点:数据元素之间存在着一对一的线性关系。(也就是说每个位置存储的数据元素只有一个,没有多个)
非线性结构 与线性结构相反。
特点:数据元素之间存在着一对多或多对多的关系,常见形式有 二维数组、多维数组、树形结构、图形结构和网状结构等 。
存储结构(物理结构)
①顺序存储方法: 就是讲逻辑上相邻的数据在物理存储上也存在相邻的连续存储单元上。
②连接存储方法: 通常是借助于程序设计语言中的指针来描述,将逻辑上相邻的数据存储在不一定连续的存储单元中。
③索引存储方法: 通常是在存储元素信息的同时,还建立附加的索引表。
④散列存储方法: 基本思想是根据元素的关键字直接计算出该元素的存储地址。
数据的运算
定义 :是定义在数据的逻辑结构上的,每种逻辑结构都有一个运算的集合。
常用运算 :插入、删除、更新、检索、排序。
数据类型
含义 :数据类型是和数据结构密切相关的一个概念。所谓数据类型,是一个值的集合和定义在这个值集上的一组操作的总称。
分类
①原子类型 :其值不可分解,也可称为非结构类型。
例如:C语言中的基本类型(整型、实型、字符型和枚举类型)以及指针类型和空类型等简单类型。
②结构类型 :其值可由若干个分量(或成分)按某种结构组成,它的分量可以是非结构型的,也可以是结构型的。
例如 :C语言中数组、结构等类型。
抽象数据类型
含义 :是抽象结构的组织和与之相关的操作,例如:集合与集合的并、交、差运算。可以看作是描述问题的模型,它独立于具体实现。
特点 :将数据定义和数据操作封装在一起,使得用户程序只能通过在ADT中定义的某种操作来访问其中的数据,从而实现信息的隐藏性。
算法
含义 :是由若干条指令组成的有穷序列,其中每条指令表示一个或多个操作。
五个准则
输入 :(输入原始数据),可以包含零个或多个。
输出 :(输出结果),至少有一个或多个。
确定性:(这个算法是干什么的),指令执行次数有限,执行时间有限。
有穷性:(无穷就是一个死循环,要死循环有什么用),指令含义明确,无二义性。
可行性:(不可行,那还怎么解决问题呢),通过有限次的基本运算能够实现。
程序和算法的区别
①程序必须依赖于计算机程序语言。
②算法可用自然语言、计算机程序语言、数学语言或约定的符号描述。
算法正确性的评判标准
①时间复杂性(最主要) :执行算法所耗费的时间。
②空间复杂性 :执行算法所耗费的存储空间,主要是辅助空间。
③可读性和可操作性 :算法应易于理解、易于编程、易于调试等。