读书笔记-数据结构Java应用案例教程-重庆大学出版社-袁开友、郑孝宗、周龙福、吴平贵、彭娟-【未完待续】

自建索引, 仅供参考, 以备后查

一、绪论

数据结构是介于数学、计算机硬件和软件之间的一门核心课程。计算机算法与其密切相关。

数据(Data):能输入到计算机并能被程序处理的信息,文字、表、图像等。

数据元素(Data Element)组成数据 的基本单位,又称为 元素、结点 、顶点、记录等。

数据对象(Data Object)或数据元素类(Data Element Class):同类数据的集合,数据的子集。(List<Student>)

数据结构(Data Structure)数据元素之间抽象关系种关系在计算机中的存储表示常见结构:集合(同属关系)、线性(一对一)、树形(一对多)、图形(网状结构,多对多)。由两部分组成:一是数据元素集合,二是元素关系集合。 DataStructure=(D,R) 二元组来表示,D是数据元素的有限集,R是D数据关系的有限集。

逻辑结构(Logical Structure):数据元素的逻辑关系,抽象数学模型,独立于存储器,与具体计算机设备无关。

存储结构(Storage Structure):逻辑结构在内存中的存储方式,又称物理结构,需要使用某种计算机编程语言来实现,一般分为有顺序存储链式存储,另有为了查找方便的索引存储(增加索引文件,拆分顺序表为多个子表)和散列存储(数据元素与存储地址之间建立映射关系)。

数据处理:对数据进行查找、插入、删除、合并、排序、统计及简单计算。

数据类型(Data Type):一类是非结构的原子类型、另一类是结构类型。


算法(Algorithm):按照特定步骤解决问题的处理过程。加减乘除、指数、矩阵等的运算,都统称算法

算法要素:操作、控制结构、数据结构 3要素

操作:不同函数库、类库差异较大,但基本操作有:算术运算(加减乘除)、关系比较(大于、小于、等于、不等于)、逻辑运算(与、或、非)、数据传送(输入、输出、赋值)。

控制结构:定义算法框架和操作的执行次序。有顺序结构、选择结构和循环结构。

数据结构:算法操作的对象即数据。数据间的逻辑关系、存储方式及处理方式即是数据结构。

算法性质:有穷性、确定性、可行性、输入性和输出性

有穷性:算法执行有限步骤后结束,每个步骤能在有限时间内完成。

确定性:每种情况有对应操作,无论在任何条件下,算法只有一条执行路径。

可行性:操作可以通过已实现的基本操作在有限次执行中实现。

输入性:输入数据做变量参与运算。

输出性:算法执行完毕最终的结果。

设计要求:目的是为了设计出良好算法,需所有 正确性Correctness、可读性Readability、稳健性Robustness、高效率低存储

正确性:对合法数据能正确计算,对极值数据等精心选择的典型的苛刻的数据依然能正确计算。

可读性:算法就易于人理解。

稳健性:对于非法数据,能恰当处理,不能产生莫名其妙的输出结果,充分考虑异常情况。

高效率和低存储:执行时间 和 运算过程中所需的存储空间。

描述方法:自然语言、流程图、伪代码、计算机语言

自然语言:正常交流语言,容易产生二义性、歧义。

流程图:描述清晰,容易表达选择结构,不依赖任何计算机和程序设计语言。缺点是流程线滥用(GOTO)。

伪代码:非正式、透明的表述方法、非编程语言,针对的是虚拟计算机。通常采用 自然语言、数学公式 和 符号来描述算法步骤,同时采用控制结构来描述执行顺序。

计算机语言:各种程序设计语言,Java、C、C++、C# 等。

分析评价:由于算法设计的优劣决定着软件性能,因此算法分析是利用数学工具

二、线性表

三、栈和队列

四、串

五、数组与广义表

数组:N个相同类型的数据元素构成的有限集合,占用一块连续地址,以字节为计数单位。特点有 数据类型相同、随机存取结构、个数固定

二维数组:行序为主 和 列序为主 两种存储次序。

行序存储:对于a[M][N]的任意寻址公式为 Loc(a[i,j]) = Loc(a[0,0]) + (i*n+j) * k  (0<=i<m,0<=j<n ,k为单个元素所占空间 可理解为C语言中sizeof(Type)的值 Java中不需要)

列序存储:Loc(a[i,j]) = Loc(a[0,0]) + (j*m+i) * k  (限定条件同上)


矩阵

六、树和二叉树

七、图

八、查找

九、排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值