0
点赞
收藏
分享

微信扫一扫

1.0 JAVA数据结构与算法

九点韶留学 2022-04-13 阅读 121

学习总结

利用计算机来解决显示世界中的各种实际问题时,首先要将实际问题中的操作对象抽象为能够用计算机表示的数据,为这些数据建立一个数学模型(数据的逻辑结构),再面对数据以某种组织形式进行存储(数据的存储结构),最后实现对数据元素的各种操作(算法设计与实现)。

1.1 数据结构的基本概念

        1.1.1 基本的数据概念和术语

1.数据(Data)

        数据是信息的载体。数据时对客观事物的逻辑归纳,是能够被计算机识别、存储和加工处理的数字、字符以及各种符号集合的统称,是计算机程序加工的“原料”。它可以是离散的数字、文字、符号等,也可以是连续的数据,如声音、图像等。

2. 数据元素(Data Element)

        数据元素是组成数据的基本单位,也成为结点、顶点、记录等,在计算机程序中通常作为一个整体进行考虑和处理。一个数据元素可以是一个不可分割的原子项,也可以由若干个数据项组成。

3. 数据项(Data Item)

        数据项是数据元素中具有独立含义的最小表示单位,为称为字段、域、属性。

4.  数据对象(Data Object)

        数据对象时性质 相同的数据元素的集合,是数据的子集。性质相同指的是数据元素具有相同数量和类型的数据项。

5. 数据结构(Data Structure)

        数据结构就是数据元素之间的相互关系,即数据的组织形式。

        包含三个方面:数据的逻辑结构数据的存储结构数据的运算(操作或算法)。通常,算法的设计取决于数据的逻辑结构,算法的实现取决于数据的存储结构。

1.1.2 数据的逻辑结构

        数据的逻辑结构常简称为数据结构,分为线性结构非线性结构了两种,其中非线性结构又主要包括树结构图结构

 

1.线性结构

        线性结构是数据元素之间具有线性关系的数据结构,数据元素之间形成一对一的关系。其特征是:除第一个和最后一个元素外,每个数据元素有且仅有一个直接前驱和一个直接后继元素,第一个元素只有一个直接后继元素,最后一个元素只有一个直接前驱元素。

2. 树结构

        树结构是数据元素之间具有层次关系的一种非线性结构,数据元素之间存在一对多的关系,树中数据元素通常称为结点。其特征是:出来根节点和叶子结点之外,树中任意一个结点只有一个直接前驱结点(父结点)和多个直接后继结点(孩子结点),根结点没有前驱结点,叶子结点没有后继结点。

3. 图结构

        图结构也是非线性结构,数据元素之间存在多对多的关系,每个数据元素可有多个前驱元素和多个后继元素。

4. 集合结构

        集合结构中的数据元素除了属于同一个集合外,它们之间没有其他关系。各个数据是“平等”的,它们的共同关系就知识属于同一个集合,如图

1.1.3 数据的存储结构

        数据的存储结构主要有两种:顺序存储和链式存储。为了加快查找速度,引入了索引(分块)查找和散列(哈希)查找。因此,从采用顺序存储和拉链式存储

 

1.顺序存储结构是把数据元素依次放在一组地址连续的存储单元里,数据元素的物理存储次序和它们的逻辑次序相同,即逻辑上相邻的结点存储在物理位置上相邻的存储单元中。通常,使用程序设计语言中的数组来实现顺序存储结构。

2.链式存储结构

        链式存储结构是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的,了逻辑上相邻的数据元素在物理位置上不一定相邻。通常,需要采用指针变量来记载前驱和后继元素的存储地址。

 

3.索引存储结构

        除数据元素需要采用顺序存储或链式存储结构外,还要加你了附加的索引表来标识数据元素的地址。它不是独立的存储结构,只是为了在查找运算时,能够减少查找的时间,提高数据查找的性能。索引表中的每一项称为索引项,索引项由元素的关键字和它的存储地址组成,关键字是能够唯一标识一个数据元素的数据项

 4.  散列(哈希)存储结构

        散列存储结构根据结点的关键字直接计算出该结点的存储地址。它是一种能快速实现访问的存储方式,理想情况下,无须比较即可根据指定值直接定位记录的存储位置。

1.2  算法

学习“数据结构”就必须认识“算法”。为什么呢?瑞士计算机科学家尼古拉斯- 沃斯 曾经提出:

程序=算法+数据结构

1.2.1 算法及其特性

1.算法的概念

        算法(Algorithm)是描述解决特定问题的思路、方法和步骤,是求解步骤(指令)的有限序列。

2. 算法的重要特性

        1. 输入:一个算法应该有零个或多个输入。

        2.有穷性:一个算法必须在执行有穷步骤之后正常结束,不能形成无穷循坏,并且每一个步骤都在可接受对的时间内完成,如果一个问题的求解算法需要10年的执行时间,尽管从数学角度看它是有穷的,可这个算法是没有任何意义的

        3.确定性:算法中的每一条指令必须有确切的含义,不能产生多义性,即算法的每一个步骤被精确定义而无歧义,相同的输入只能有唯一的输出结果。

举报

相关推荐

0 条评论