当前位置:首页 > 教育资讯

数据结构学习笔记之基础概念

第一章:数据结构之绪论

1.1、介绍

早期计算机主要是用于进行数值计算,随着发展,计算机不仅仅数值计算,还可以用于非数值计算,例如:字符、表格、图像等。

数据结构就是研究如何组织、处理这些数据。

数据结构定义:数据结构是一门研究非数值计算程序设计中操作对象,以及这些操作对象之间的关系和操作的学科。

1.2、基础概念

(1)数据

什么是数据?对于计算机而言,任何能够输入计算机中,并且能够被计算机处理的符号,都称为数据,例如:数值,字符,图像,声音等等,都属于数据。

数据:所有能够输入计算机中并且被计算机所处理的符号总称。

(2)数据元素

什么是数据元素?

数据元素是数据的基本单位。

数据元素也可以称为数据记录。

例如:学生信息表表中,一个学生信息就是数据元素。类似一张数据表中的一条记录。

(3)数据项

数据项是组成数据元素的最小单位。

数据项是独立的,不可再分割的最小单位。

例如:一个学生信息中,包含:姓名,年龄,班级,这些都是不能再细分了的内容。数据项就类似于学生信息表中的一个字段。

(4)数据对象

数据对象,具有相同性质的数据元素的集合。

说白了,就是很多个相同性质的数据元素组成的。

例如:一个学生信息表,就可以看作是一个数据对象,表中每一条记录都是数据元素。

(5)数据结构

数据结构,相互之间存在一种或者多种特定关系的数据元素的集合。

简单理解:就是数据元素之间的关系,就称为结构。结构就是指关系。

1.2、数据结构

数据结构分为:逻辑结构、存储结构。

(1)逻辑结构

逻辑结构,指得是数据元素之间的关系。

数据元素之间通常有如下四种关系:

集合结构:属于同一个集合,具体没啥关系。

线性结构:存在一对一的关系。

树结构:存在一对多的关系。

图结构(网状结构):存在多对多的关系。

线性结构

线性结构

非线性结构

集合结构

树结构

图结构(网状结构)

线性结构常见的有如下:

线性表

栈和队列

数组

广义表

非线性结构常见的有如下:

二叉树

有向图

无向图

(2)存储结构

存储结构,也称为物理结构,它指得是数据元素在计算机内存中是如何存储的。

一般数据在计算机内存中,有如下两种方式存储:

顺序存储:分配一整块连续的内存空间,按照顺序将数据元素保存在计算机中。

链式存储:内存空间可以不连续,只要记录下一个节点的内存空间地址即可。

1.3、数据类型

数据类型(Data Type):是一个值的集合和定义在这个值集合上面的一组操作的总称。

数据类型是高级语言中的概念,目的是为了方便操作各种数据。

例如:C语言中的整型,浮点型,Java中的布尔型,等等。

1.4、抽象数据类型

抽象数据类型(Abstract Data Type,ADT),一般是用户自定义的数据类型。

可以理解为:高级语言中的类。

1.5、算法和算法分析

(1)算法

什么是算法?

算法就是为了解决某一类问题而组成的一个有限长的操作序列集合。

算法的五要素

有穷性:一个算法的执行步骤是有限的。

确定性:算法中每一个指令都是确定的,不存在二义性。

可行性:算法可以解决这个问题。

输入:0个或多个输入。

输出:1个或多个输出。(如果算法没有输出,那这个算法没有任何意义)

评价算法的四方面

正确性:能够得出正确的结果。

可读性:代码易于理解。

健壮性:出现错误率低。

高效性:执行效率高

(2)算法复杂度

一个算法的优劣,可以通过复杂度来判断。

算法的复杂度分为两类:

时间复杂度:执行多长时间。

空间复杂度:占用多少内存空间。

(2.1)时间复杂度

复杂度,就需要找出算法的问题规模和语句频度。

问题规模:需要执行多少次,一般可以通过是否有循环判断、递归、迭代等等。

语句频度:一个指令重复执行的次数。

复杂度采用大O表示法。(下面复杂度,从小到大排列)

常量复杂度:O(1)

对数复杂度:O(logn)

线性复杂度:O(n)

线性对数复杂度:O(nlogn)

平方复杂度:O(n^2)

立方复杂度:O(n^3)

指数复杂度:O(2^n)

(2.2)空间复杂度

和时间复杂度类似,都是采用大O表示法,程序中占用的内存空间大小和问题规模n的关系。

以上,就是数据结构相关的基础概念介绍。

这是我的第105篇文章,感谢您的阅读。

本文来自网络,不代表教育资讯立场,转载请注明出处。