一、数据结构的基本概念
- 数据:数据是信息的载体,是描述客观事物属性的数、字符以及所有能输入到计算机并被程序识别并执行的符号的集合
- 数据元素:数据元素是数据的基本单位,通常作为一个整体进行考虑和处理。一个数据元素可以有若干数据项组成,数据项是构成数据元素的不可分割的最小单位。如:学生纪录是一个数据元素,由学号、姓名、性别等数据项组成
- 数据对象:数据对象是具有相同性值的数据元素的集合,是数据的一个子集
- 数据类型:数据类型是一个值的集合 和 定义在此集合上的一组操作的总称
- 数据结构:数据结构是相互之间存在一种或多种特定关系的数据元素的集合
二、数据结构的三要素
1.逻辑结构
数据的逻辑结构:逻辑结构指的是数据元素之间的逻辑关系,即从逻辑关系上描述数据
-
线性结构:结构中的元素之间只存在一对一的关系,除了第一个元素以外,每个元素都有唯一的前驱;除了最后一个元素外,每个元素都有唯一的后继(栈、队列)
-
集合结构:数据元素之间除了同属于一个“集合”外,没有任何关系
-
树形结构:元素之间存在一对多的关系
-
图形结构:元素之间存在多对多的关系
数据元素之间的逻辑关系主要有三种:一对一(线性结构),一对多(树形结构),多对多(图形结构)。
2.存储结构(物理结构)
存储结构(物理结构):存储结构是指在计算机中的表示(映象)
- 顺序存储:把逻辑上相邻的元素存储在物理位置也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现
- 链式存储:逻辑上相邻的元素在物理位置上可以不相邻,借助指示元素存储地址的指针来表示元素之间的逻辑关系
数据结构的物理结构只有两种:顺序存储和链式存储,像栈、队列、树、图等从逻辑结构去抽象的,映射到内存中,也是这两种形式
3.数据的运算
数据的运算:施加在数据上的运算包括运算的定义何实现。运算的定义是针对逻辑结构的,指出运算的功能;运算的实现是针对存储结构的,指出运算的具体操作步骤
三、算法的基本概念
恒等式:程序 = 算法 + 数据结构
-
算法的特性:
- 有穷性:一个算法必须在执行有限步骤后结束,并且每一步都可以在有限时间内结束
- 可行性:算法中的操作都可以通过已经实现的基本运算执行有限次数完成
- 确定性:算法中的每条指令都要有明确的含义,对于相同的输入,只能得到相同的输出
- 输入
- 输出
-
一个好的算法的目的
- 正确性:算法能够正确的解决问题
- 可读性:良好的算法可以让人们方便理解
- 健壮性:输入奇怪的数据时,算法能够进行适当的处理,不会输出奇怪的结果
- 低存储高效率:所占用内存空间小,算法执行效率高
四、问题规模
一个良好的算法,需要达到低存储高效率的目的,那么怎样判断一个算法执行效率高、占用内存少呢?问题规模就是用来统计这个问题
- 时间复杂度T(n):一般情况下,一个算法中重复执行的次数是问题规模n的某个函数f(n),算法的时间复杂度记为T(n)= O(n),它表示随着问题规模n的增大,算法执行时间和函数f(n)的增长率相同,称为算法的渐进时间复杂度,简称时间复杂度。
- 空间复杂度S(n):算法的空间复杂度S(n)定义为算法所占用的存储空间,它是问题规模n的函数,记为S(n) = O(n)。
五、计算机内存
- 内存的作用:计算机程序都是运行在内存中的
- 内存如何存储
举个例子:考试(手机不允许带入)
将内存当做手机袋。学生进入考场考试,手机不允许带入考场,可以将手机放在门口的手机袋中,然后考完试出考场再取走。每个袋子对应一个编号,对应学生的座位号,坐在哪个座位就将手机放在对应号码的手机袋中,方便考完试后直接取走。
手机袋-------存储单元
编号----------内存地址