知识框架

数据结构必备知识(数据结构知识详解)(1)

1. 数据结构的基本概念1.1 基本概念和术语1.1.1 数据

定义:是信息的载体,是描述客观事实属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合

数据的组成:

1.1.2 数据元素

定义:数据元素是数据的基本单位,通常作为一个整体进行考虑和处理,有一定意义的基本单位,在计算机中通常作为整体处理,也被称为元素、记录

数据元素组成:由若干数据项组成

例子:个人信息表的每一行就是一个数据元素

数据结构必备知识(数据结构知识详解)(2)

1.1.3 数据项

定义:构成数据元素的不可分割的最小单位,若干数据项可以组成数据元素。

注:数据项是数据的最小单位

1.1.4 数据对象

定义:具有相同性质的数据元素的组合,是数据的子集。

例子

数据结构必备知识(数据结构知识详解)(3)

1.1.5 抽象数据类型

定义:抽象数据组织及与之相关的操作

组成:

抽象数据类型的标准格式:

数据结构必备知识(数据结构知识详解)(4)

1.1.6 数据类型

定义:一个值的集合和定义在此集合上的一组操作的总称

作用:

分类:

1.1.7 数据结构

定义:相互之间存在一种或多种特定关系的数据元素的集合

数据结构三要素:

1.2 数据结构三要素1.2.1 数据的逻辑结构

逻辑结构是指数据对象中数据元素之间的逻辑关系,即从逻辑关系上描述数据。

数据结构必备知识(数据结构知识详解)(5)

1. 线性结构:

定义:结构中的数据元素之间只存在一对一的关系

例子

数据结构必备知识(数据结构知识详解)(6)

2. 非线性结构:

定义:结构中数据元素之间存在非一对一关系

树形结构

一对多关系

数据结构必备知识(数据结构知识详解)(7)

图形结构

多对多关系

数据结构必备知识(数据结构知识详解)(8)

集合

除同属一个集合外,再无其他关系

数据结构必备知识(数据结构知识详解)(9)

1.2.2 数据的存储结构

定义:数据对象在计算机中的存储表示,也称为物理结构

数据域:数据元素由若干个数据项构成时,数据项的表示称为数据域

数据结构的存储方法:

1. 顺序存储方法

定义:将逻辑上相邻的节点存储在物理位置上也相邻的存储单元中,节点之间的关系由存储单元的邻接关系来体现

优点:

缺点:

存取结构

2 链式存储方法:

定义:不要求逻辑上相邻的节点在物理位置上也相邻,借助指示节点存储地址的指针来表示节点之间的逻辑关系

优点:

缺点:

注:

3. 索引存储方法

定义:存储元素信息时,建立附加的索引表

优点:

缺点:

注:

4. 散列(Hash)存储方法

定义:根据节点的关键字直接计算出该节点的存储地址,形如location = Hash(key)

优点:

缺点:

注:

1.2.3 数据的运算

定义:施加在数据上的运算,包括运算的定义、实现

注:

2 算法和算法评价2.1 算法的基本概念

定义:算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作

2.1.1 指令

指令能被人或机器等计算装置执行,可以是计算机指令,也可以是我们平时的语言文字

1. 算法

为了解决某个或某类问题,需要把指令表示成一定的操作序列,操作序列包括一组操作,每一个操作都完成特定的功能

2. 算法例子

把大象装进冰箱:

2.1.2 算法的5个特性

1. 有穷性

一个算法必须总是在执行有穷步之后结束,且每一步都必须在有穷时间内完成。

例子: 经常写出死循环的代码,这就是不满足有穷性

2. 确定性

每一条指令必须有确切的含义,相同的输入只能得出相同的输出,读者对其理解不会产生二义性

3. 可行性

算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现

4. 输入

有零个或多个输入,这些输入取自于某个特定的对象的集合

5. 输出

输出是算法进行信息加工后得到的结果,无输出的算法是没有意义的

2.1.3 算法的评价(四个方面)

1. 正确性

算法能正确地解决求解问题

正确的层次:

  1. 算法程序没有语法错误
  2. 算法程序对于合法的输入数据能够产生满足要求的输出结果
  3. 算法程序对于非法的输入数据能够得出满足规格说明的结果
  4. 算法程序对于精心选择的,甚至刁难的测试数据都有满足要求的输出结果

层次1要求最低,层析4是最困难的,我们几乎不可能逐一验证所有的输入都得到正确的结果,一般情况下,把层次3作为一个算法是否正确的标准

2. 可读性

有助于人们阅读、理解和交流

3. 健壮性

输入非法数据时,算法能适当地做出反应或进行处理,而不是产生莫名其妙的错误

4. 高效率与低存储量需求

效率:指时间,效率越高越好,时间短的算法效率高。 存储量:指空间,存储量越低越好,指算法在执行过程中需要的最大存储空间。

2.2 算法效率的度量2.2.1 度量标准2.2.2 度量方法

1. 事后统计方法

主要是通过设计好的测试程序和数据,利用计算机计时器对不同算法编制的程序的运行时间进行比较,从而确定算法效率的高低

缺陷

2. 事前分析估算方法

在计算机程序编制前,依据统计方法对算法进行估算

程序在计算机上运行时所消耗的时间取决于下列因素:

  1. 算法采用的策略和方法 —— 算法好坏的根本
  2. 编译产生的代码质量 —— 由软件来支持
  3. 问题的输入规模
  4. 机器执行指令的速度
2.2.3 时间复杂度

1. 频度

定义:一个语句在算法中被重复执行的次数

2. T(n)

定义:算法中所有语句的频度之和

3. 算法的基本运算

定义:最深处循环内语句

算法的基本运算的频度与T(n)同数量级

4. 算法时间复杂度

定义:用算法的基本运算的频度f(n)来分析

算法时间复杂度标记:T(n)=O(f(n))

  1. O:T(n)的数量级
  2. 常见阶的叫法 O(1):常数阶;O(2):线性阶;O(logn):对数阶;O(n²):平方阶
  3. 常见T(n)的大小关系 O(1)≤O(log₂(n))≤O(n)≤O(n·log₂(n))≤O(n²)≤O(n³)≤O(2ⁿ)≤O(n!)≤O(nⁿ)
  4. 复杂度计算规则

5. 影响时间复杂度的因素

6. 最坏情况与平均情况

2.2.4 空间复杂度

算法的空间复杂度:记为S(n),表示该算法所消耗的空间,它是问题规模n的函数

渐进空间复杂度:简称为空间复杂度,记为S(n)=O(g(n))

分析空间复杂度,只需分析除输入和程序之外的额外空间

2.2.5 分析时空复杂度的方法

1. 观察法(循环主体中变量与循环条件无关)

(1)计算方法:通过列举、归纳得出

(2)分类:

(3)例子

数据结构必备知识(数据结构知识详解)(10)

时间复杂度为O(n)

数据结构必备知识(数据结构知识详解)(11)

时间复杂度为O(n²)

2. 设循环次数t方法(循环主体中变量与循环条件有关)

(1)计算方法:设t次结束 (2)例子

数据结构必备知识(数据结构知识详解)(12)

​时间复杂度为O(log₂(n))

制作不易,有帮助的话还希望能给个 一键三连 支持下,谢谢大家。

,