数据结构与算法概论

计算机已经成为我们有力的工具。利用计算机处理数据,我们需要考虑到数据的存储表示,以及对数据的处理。
而数据的表示则要用到我们所说的数据结构,对数据的处理需要用到算法。

1 . 数据结构

对数据的存储表示,我们不仅仅需要保存每个独立数据的值,还需要保存数据中数据元素间的关系。

数据

首先我们来看一下我们的主要对象:数据
数据指的是所有能够输入到计算机并能够被计算机程序识别和处理的 集合
(1)数据的分类:数值型(整数、实数等)+ 非数值型(图像、语音、文本等)
(2)数据的组成:数据元素(由数据项构成)一般数据元素是我们考虑数据时的最小单位

数据元素间的关系

数据中数据元素间的逻辑关系我们可以用数据的逻辑结构来表示。这个是针对数据的
逻辑结构
(1)集合:数据元素间都是平等的,比如接幼儿园小孩子回家在门口等候的父母亲
(2)线性结构:数据间一对一的关系,比如列队
(3)树结构:一对多的层次关系。公司部门里面的领导员工
(4)图结构:数据元素间多对多的任意关系。辩论自由辩时的状态

存储结构(物理结构)

数据的存储表示,我们需要考虑到在计算机中用什么结构去存,这个是针对计算机的
(1)顺序存储:用一组连续的单元存储。此时数据元素间的逻辑关系由她们在内存中的位置呈现。比如按次序列队
(2)链接存储:数据在内存中是可以不连续的。排队过程中总是存在着有人插队,这个可以用飞机场接机来表示,机场外的
候机人手中拿着的名牌即位待接人的地址。

抽象数据类型

对现实问题的解决,我们首先需要做的是通过现象看本质,从具体的问题中抽象出数学模型而忽略那些非本质的细节。这个数学模型
中包含了我们需要解决问题需要的数据分析 以及 对数据的一些操作。而这样形成的一个数据结构和操作我们就称为抽象数据类型。

2. 算法

算法是我们对数据的处理方法,也是我们解决实际问题的步骤描述。在计算机中表现为指令的有限序列,并且每条指令对应着一个或者多个操作。

算法的特性

(1)输入:零个或者多个输入
(2)输出:算法一定要有输出,不然要这有何用呢?
(3)有穷性:在计算机中我们能够处理的只是有限,而无限只是在数学意义中
(4)确定性:每一个步骤只能有一个含义,同样的输入必须得到相同的输出。
(5)可行性:每一步可行,能够通过有限次完成

算法设计的要求

(1)正确性:这是前提
(2)可读性:这样的算法设计便于阅读、理解交流
(3)鲁棒性:对不合法的输入,也能做出相关的处理,而不是异常或者莫名奇妙的结果。
(4)高效性:时间复杂度要能接受
(5)存储量低:节省资源

算法的描述

(1)自然语言
(2)流程图
(3)程序设计语言
(4)伪代码

算法分析

我们设计一个算法必须要考虑到算法的高效性,包括时间上、空间上。
常数阶<对数阶<线性阶<nlogn阶<平方阶<立方阶<指数阶<阶乘阶...
(1)时间复杂度:渐进时间复杂度。大O记号表示法
(2)空间复杂度:内存资源的消耗度量

posted on 2019-04-04 08:53  仁在江湖飘  阅读(192)  评论(0编辑  收藏  举报

导航