【计算机二级公共基础】《数据结构与算法》笔记

一、算法

1. 概念

1.1 算法:是指解题方案的准确而完整的描述。(算法不等于程序)
  • 可行性:在设计一个算法时,必须考虑他的可行性
  • 确定性:算法中的每个步骤必须是明确定义的,不允许模棱两可
  • 有穷性:算法必须在有限的时间内做完,必须在执行有限个步骤之后停止
  • 足够的情报:是指算法要有一定的输入数据和必须要有的输出结果

2. 算法的基本要素

2.1 对数据对象的运算操作:
  • 算数运算、逻辑运算、关系运算、数据传输
2.2 算法的控制结构
  • 算法中各操作之间的执行顺序
  • 描述算法的工具通常有传统流程图、N-S结构化流程图、算法描述语言等
  • 一个算法一般可以用==顺序、选择、循环、==三种基本结构组合而成

3. 时间和空间复杂度

3.1 算法的时间复杂度
  • 是指执行算法所需要的计算工作量,可以用算法所执行的基本运算次数度量
3.2 算法的空间复杂度
  • 是指执行算法所需要的内存空间。包括算法程序、输入的初始数据以及算法执行过程中需要的额外空间。
3.3 算法的时间复杂度和 空间复杂度 相互独立

二、数据结构

1. 数据结构

1.1 数据:
  • 需要处理的数据元素的集合,一般来说,这些数据元素,具有某个共同的特征

数据元素是数据的基本单位,即数据集合中的个体。

有时一个数据元素可由若干个==数据项(Data Item)==组成。数据项是数据的最小单位。

1.2 结构:
  • 所谓“结构”,是集合中各个数据元素之间存在的某种关系(或联系)
1.3 数据结构:
  • 是指相互有关联的数据元素的集合

2. 数据结构的分类

2.1 逻辑结构:

指反映数据元素之间的逻辑关系(即前后件关系)的数据结构

  • 线性结构:线性表,栈,队列

线性结构(线性表):

  1. 有且只有一个根节点,它无前件
  2. 每一个节点最多有一个前件,也最多有一个后件

例子:

春–>夏–>秋–>冬

就是可以用一条线串起来的

  • 非线性结构:树,图

不满足以上两个条件的数据结构就称为非线性结构,

非线性结构主要是指树形结构和网状结构
在这里插入图片描述

2.2 存储结构(物理结构)

又称为数据的物理结构,是数据的逻辑结构在计算机存储空间中的存放方式

  • 顺序存储:

主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元里

在这里插入图片描述

  • 链式存储

每一个节点至少包含一个指针域,用指针的指向来体现数据元素之间在逻辑上的联系

在这里插入图片描述

  1. 一种逻辑结构可以有多种存储结构
  2. 不同的存储结构其数据处理的效率不同
3.3 运算
  • 插入,删除,查找,排序

3. 线性表

3.1 线性表的概念

线性表是n (n >= 0) 个数据元素构成的有限序列,表中除第一个元素外的每一个元素, 有且只有一个前件, 除最后一个元素外, 有且只有一个后件。

  • 例子:

在这里插入图片描述

在这里插入图片描述

4. 线性表的顺序存储结构

4.1 概念
  • 通常,线性表可以采用顺序存储和 链式存储,但一般使用 顺序存储结构。
  • 线性表的顺序存储又叫 顺序表
4.2 特点:
  1. 线性表中所有元素所占的存储空间是连续的
  2. 线性表中数据元素在存储空间中是按逻辑顺序依次存放的
  3. 可以随机访问数据元素
  4. 做插入、删除时需要移动大量元素, 因此线性表不便于插入和删除元素

5. 栈

5.1 栈的概念

是限定在一端进行插入和 删除的线性表

5.2 栈的特点:
  • 是只能在栈顶进行插入和 删除

在这里插入图片描述

  • 栈的修改原则 是 “先进后出”“后进后出”

在这里插入图片描述

  • 是限定在一端进行插入和 删除的线性表
  • 栈底指针不变,栈中元素随栈顶指针的变化而动态变化

在这里插入图片描述

  • 栈具有记忆功能
  • 栈支持子程序调用

6. 队列

6.1 队列的概念
  • 队列: 是指允许在一端进行插入,而在另一端进行删除的线性表。原则是:先进先出或(后进后出)

在这里插入图片描述

6.2 队列的特点:
  1. 队列只允许在队尾进行插入,而在对头 进行删除
  2. 队列的修改原则是“先进先出”或 “后进后出
  3. 队列中元素随对头指针和队尾指针的变化而动态变化
6.3 循环队列的逻辑和 指针所在域计算的示意图:

在这里插入图片描述

7. 线性表和线性链表的概念

  • 线性表可以采用顺序存储和 链式存储,一般使用 顺序存储结构
  • 线性表的顺序存储叫做顺序表,线性表的链式存储结构叫做线性链表

顺序表示意图:

在这里插入图片描述

8. 线性链表

线性表链式存储结构表示意图:

在这里插入图片描述

8.1 线性链表的特点
  • 各数据结点的存储空间可以不连续
  • 各数据元素的存储顺序 与 逻辑顺序可以不一致

在这里插入图片描述

  • 线性表的 链式存储所占存储空间大于顺序存储结构
  • 查找结点时链式存储要比顺序存储慢
  • 链式存储插入、删除元素比顺序存储灵活(指针域指向或 不指向)

在这里插入图片描述

8.2 线性链表的特殊结构–双向链表

示意图:

在这里插入图片描述

8.3 线性链表的特殊结构–循环链表

在这里插入图片描述

9. 树的概念

是n(n>0)个元素的有限集合。他有且仅有一个称为的元素;其余元素是互不相交的子树。

在这里插入图片描述

9.1. 二叉树
  • 二叉树:是一个有限的结点集合,该集合或者为空,或者由一个根节点及其两棵互不相交的左右二叉子树所组成

在这里插入图片描述

  • 二叉树的五种基本形态:

在这里插入图片描述

9.2 特殊的二叉树
  • 满二叉树:除最后一层外,每一层上的节点数均达到最大值

在这里插入图片描述

  • 完全二叉树:除最后一层外,每一层上的节点数均达到最大值,在最后一层上只缺少右边的若干接点

在这里插入图片描述

9.3 二叉树的性质(计算二叉树的结点、深度)
  • 非空二叉树只有一个根节点,每个结点最多有两棵子树,分别称为左子树和右子树
  1. 在二叉树的第K层上,最多有==2k-1==个结点
  2. 在深度为m的二叉树 **最多**有2m-1个结点
  3. 度为0 的结点(叶子结点)总比度为2 的结点多一个
  4. 有n 个结点的二叉树,深度 至少[log2 n] +1
9.4. 二叉树的遍历(前序、中序、后序)

在这里插入图片描述

10. 查找技术

10.1 顺序查找
  • 概念:对于长度为n的线性表,平均要进行n/2次比较,在最坏情况下进行n次比较
  • 顺序查找适用于无序表链式线性表(不管无序还是有序)
10.2 二分查找
  • 概念:适用于顺序存储有序表,对长度为n 的线性表,在最坏的情况下进行 log2n次比较

在这里插入图片描述

  • 注意:即使是有序线性表,如果采用链式存储结构,也只能用顺序查找

11. 排序

11.1 各种排序的时长和 效率

在这里插入图片描述

11.2 快速排序
  • 基本思想:
  1. 在要排序的序列中找一个数作为基准数(通常为第一个数)
  2. 通过交换将这个虚列中所有 比基准数大的数放在右边,比基准数小的数放在左边
  3. 以基准数为分割线分为两个子表, 对两个子表 重复上述步骤

在这里插入图片描述

图片和文字素材来自 :B站源恩等考二级公共基础

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值