您的位置:首页 > 理论基础 > 数据结构算法

[考研系列之数据结构]数据结构概述

2014-05-28 21:07 211 查看


1.脑图







2.数据结构


2.1 抽象数据类型

表示法:

(D,S,P)

D:数据对象

S:D上的关系集

P:对D的基本操作集

ADT格式



ADT 抽象数据类型名{

数据对象:<数据对象定义>

数据关系:<数据对象的定义>

基本操作:<基本操作的定义>

}ADT 抽象数据类型名

基本操作的格式:



基本操作名(参数表)

初始条件:<初始条件描述>

操作结构:<操作结果描述>


2.2 分类


2.2.1 按值的不同特性

原子类型的值是不能分解的,如C中基本数据类型

结构类型的值是可分解的,是由结构类型和原子类型聚合成的

而结构类型中按照值的成分是不是可变又分成:固定聚合类型&可变聚合类型

固定聚合类型如复数,它是由<a,b>两个实数组成

可变聚合类型如字符串,它是由n个char类型字符组成


2.2.2 按数据元素之间表示

顺序映像就如同数组,是一块连续的空间,由头指针和尾指针就可以指定这段空间

非顺序映像如同链表,是n块不连续空间,每块空间有一个指针指向下一个空间(也有双向指针)


2.2.3 按前驱后继分类

首先,我们看看什么是前驱后继

前驱:某数据元素在此数据类型中的上一个数据元素

后继:某数据元素在此数据类型中的下一个数据元素

如果一个数据类型中所有数据元素没有前驱也没有后继,那么每个元素之间就没没有关联,这种结构称之为集合;

如果每个元素都有一个前驱和一个后继(其实这么说不对,因为第一个元素没有前驱,最后一个元素没有后继),那么他们就形成了一个线性的结构,称之为线性表

再如果每个元素都有一个前驱,但是有多个后继(这么说也不对,因为第一个元素是没有前驱,而叶子节点是没有后继),那么他们就成了一个树

最后,n个前驱n个后继的话,就形成了图。

我们的数据结构主要就是以前驱后继的形式去分类学习的,再辅以顺序映像和非顺序映像的表示就衍生了更多的数据结构,这个接下来会逐步讲述。




3.算法


3.1 什么是算法?

算法是对特定问题求解的步骤的描述是指令的有限序列


3.2 算法的5个重要特征

[1] 有穷性

两点含义:

(1) 算法必须是在有穷步后结束,如无限循环就不是有穷的。

(2) 每步算法必须是在有穷时间内完成

[2] 确定性

两点含义:

(1) 每一条指令都不能有二义性

(2) 相同的输入只能有相同的输出

[3] 可行性

算法中描述的操作都能通过有限次基本运算实现

[4] 输入

一个算法有0个以上输入

[5] 输出

一个算法有1个以上输出


3.3 算法设计的要求:

[1] 正确性

四个层次:

a.不含语法错误

b.对于几组输入的输出正确

c.程序对于精心选择的输入能得出正确的输出

d.程序对于一切合法输入都有正确的输出

[2] 可读性

算法代码可被人阅读

[3] 健壮性

代码在面对异常时处理

[4] 效率与低储存量需求

算法的时间和空间代价


3.4 算法复杂度

算法的效率从耗费的时间和空间上划分:

[1] 时间复杂度

时间复杂度一般使用大O表示法,它表示算法的时间效率的下限,按照函数增长趋势又分为常量阶、线性阶、平方阶、对数阶、指数阶(算法的效率逐渐降低,复杂度逐渐升高)。

[2] 空间复杂度

指的是算法运行期间占用的内存大小,一般也用大O表示法表示最差情况。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: