软件设计师_数据结构与算法_学习笔记

news2024/10/7 14:30:05

文章目录

  • 6.1 数组与矩阵
    • 6.1.1 数组
    • 6.1.2 稀疏矩阵
  • 6.2 线性表
    • 6.2.1 数据结构的定义
    • 6.2.2 顺序表与链表
      • 6.2.2.1 定义
      • 6.2.2.2 链表的操作
    • 6.2.3 顺序存储和链式存储的对比
    • 6.2.4 队列、循环队列、栈
      • 6.2.4.2 循环队列队空与队满条件
      • 6.2.4.3 出入后不可能出现的序列练习
    • 6.2.5 串
  • 6.3 广义表
  • 6.4 树与二叉树
    • 6.4.1 基本概念
    • 6.4.2 满二叉树与完全二叉树
    • 6.4.3 二叉树的重要性质
    • 6.4.4 二叉树的遍历
    • 6.4.5 方向构造二叉树
    • 6.4.6 树转二叉树
    • 6.4.7 查找二叉树(排序二叉树)
    • 6.4.8 最优二叉树(哈夫曼树)
    • 6.4.9 线索二叉树
  • 6.5 图
  • 6.6 排序与查找
  • 6.7 算法基础及常见的算法

6.1 数组与矩阵

6.1.1 数组

求存储地址

  • 一维数组直接算
  • 二维数组看清是按行还是按列存储

在这里插入图片描述

6.1.2 稀疏矩阵

在这里插入图片描述

求对应一维数组下标公式,可以直接代两个元素进行验算

在这里插入图片描述

6.2 线性表

6.2.1 数据结构的定义

线性结构

  • 线性表

非线性结构

  • 图(可能存在环路)

在这里插入图片描述

6.2.2 顺序表与链表

6.2.2.1 定义

顺序表:采用一维数组的方式来存信息
链表:每个存储单元包含数据和指针

  • 单链表:只有一套指针,头结点指向第一个元素,并依次指下去。
  • 循环链表:与单链表的区别就是尾部有个指针直接指向头部。
  • 双向链表:可以双向移动,一套指针从头指到尾部,一套由尾指到头部。

6.2.2.2 链表的操作

  • 单链表删除结点:p->next = q->next
  • 单链表插入结点:s->next = p->next;p->next = s->next

引入头结点的好处可以让所有的结点操作方式一致

在这里插入图片描述

6.2.3 顺序存储和链式存储的对比

在这里插入图片描述

6.2.4 队列、循环队列、栈

队列:先进先出(又称先进先出表)
栈:先进后出

在这里插入图片描述

6.2.4.2 循环队列队空与队满条件

在这里插入图片描述

6.2.4.3 出入后不可能出现的序列练习

在这里插入图片描述

6.2.5 串

串是仅由字符构成的有限序列,是线性表的一种。

6.3 广义表

  • 广义表是线性表的推广
  • 广义表的元素即可以是单个元素(原子),也可以是广义表(子表)
  • 操作:
    *取表头head(LS)
    *取表尾tail(LS)

在这里插入图片描述

6.4 树与二叉树

6.4.1 基本概念

  • 根:树最顶层的结点。即下图的结点1。
  • 父结点(双亲结点):元素的上一层。下图中结点1为结点2、3的父结点。
  • 子结点:与父结点相反。
  • 兄弟结点:与该结点同层。下图结点4是结点5的兄弟结点。6为堂兄弟结点。
  • 结点的度:一个结点的子树的个数。下图结点2的度为2,结点7的度为0。
  • 树的度:该树中结点的度最高的结点的度的个数。MAX。下图树的度为2。
  • 叶子结点(终端结点):度为0的结点。下图结点4、5、7、8。
  • 内部结点(分支结点或非终端结点):除根结点和叶子结点外。下图结点2、3、6。
  • 结点的层次:根结点为第一层,依次往下。
  • 树的高度(深度):一棵树最大的层数。下图树的高度为4。

在这里插入图片描述

6.4.2 满二叉树与完全二叉树

  • 满二叉树:深度为k的二叉树节点个数为2k -1,即所有的结点都是满的。

可以对满二叉树进行连续编号,约定编号从根结点自上而下,自左至右依次进行。

  • 完全二叉树:除最底层外其余为满二叉树,最底层从左至右依次排列。

在这里插入图片描述

6.4.3 二叉树的重要性质

在这里插入图片描述

6.4.4 二叉树的遍历

三种遍历方式的区别就是根遍历的先后问题。

  • 先序遍历:根左右
  • 中序遍历:左根右
  • 后序遍历:左右根
  • 层次遍历:按顺序遍历

在这里插入图片描述

6.4.5 方向构造二叉树

给出二叉树的遍历序列,反向推出二叉树的结构
在这里插入图片描述

在这里插入图片描述

6.4.6 树转二叉树

  1. 将兄弟结点相连。
  2. 只保留第一个孩子结点与父结点的连线,其余全部断开,在旋转图可得

在这里插入图片描述

6.4.7 查找二叉树(排序二叉树)

对于每个结点,其左孩子结点小于根,右孩子结点大于根,称为查找二叉树。

在这里插入图片描述

6.4.8 最优二叉树(哈夫曼树)

哈夫曼树是其叶子结点带权路径长度最短的二叉树

  • 带权路径长度:即路径长度乘权值,下图第一个二叉树的结点8的带权路径长度为8*3=24。
  • 树的带权路径长度为其总和。

在这里插入图片描述

6.4.9 线索二叉树

在这里插入图片描述

6.5 图

6.6 排序与查找

6.7 算法基础及常见的算法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1062148.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言学习系列->联合体and枚举

文章目录 前言联合体概述联合体的特点联合体大小的计算优点练习 枚举概述优点使用 前言 在上一篇文章中,小编将结构体的学习笔记整理出来了。现在,小编将枚举和联合体笔记分享给大家。枚举和联合体与结构体一样,都是自定义类型,在…

竞赛 机器视觉的试卷批改系统 - opencv python 视觉识别

文章目录 0 简介1 项目背景2 项目目的3 系统设计3.1 目标对象3.2 系统架构3.3 软件设计方案 4 图像预处理4.1 灰度二值化4.2 形态学处理4.3 算式提取4.4 倾斜校正4.5 字符分割 5 字符识别5.1 支持向量机原理5.2 基于SVM的字符识别5.3 SVM算法实现 6 算法测试7 系统实现8 最后 0…

MySQL之逻辑备份与恢复

逻辑备份简介: 备份的是建表、建库、插入等操作所执行SQL语句,适用于中小型数据库,效率相对较低。 本质:导出的是SQL语句文件 优点:不论是什么存储引擎,都可以用mysqldump备成SQL语句 缺点:速度…

输入一个大写字母,程序根据输入字符在字母表的顺序位置n,输出一个高度为n的金字塔图形

python字母金字塔根据输入的字母输出一个字母金字塔输入一个大写字母,程序根据输入字符在字母表的顺序位置n,输出一个高度为n的金字塔图形,比如输入E时,此时 字母金字塔 # A # ABA # ABCBA # ABCDCBA # ABCDEDCBA 看到…

php单独使用think-rom数据库 | thinkphp手动关闭数据库连接

背景(think-orm2.0.61) 由于需要长时间运行一个php脚本,而运行过程并不是需要一直与数据库交互,但thinkphp主要是为web站点开发的框架,而站点一般都是数据获取完则进程结束,所以thinkphp没提供手动关闭数据…

Trie树(字典树)C++详解

字典树的定义 字典树是一个用来快速查找和存储字符串集合的数据结构。 字典树的形状 假设我们字典树里有以下5个单词: akio,akno,cspj,csps,trie 那么字典树长这样: trie 的结构非常好懂,我们…

软考高级之系统架构师之设计模式

概述 设计模式是一种通用的设计方法,实际开发中可能不止23种。为方便理解和应用,一般分为3类: 创建型,通过采用抽象类所定义的接口,封装系统中对象如何创建、组合等信息。工厂方法模式、抽象工厂模式、单例模式、建造…

堆的初步认识

在学习本节文章前要先了解:大顶堆与小顶堆: (优先级队列_加瓦不加班的博客-CSDN博客) 堆实现 计算机科学中,堆是一种基于树的数据结构,通常用完全二叉树实现。 什么叫完全二叉树? 答&#x…

8.Vue_Element

1 Ajax 1.1 Ajax介绍 1.1.1 Ajax概述 我们前端页面中的数据,如下图所示的表格中的学生信息,应该来自于后台,那么我们的后台和前端是互不影响的2个程序,那么我们前端应该如何从后台获取数据呢?因为是2个程序&#xf…

JavaEE-文件IO操作

构造方法 一般方法,有很多,我们以下只是列举几个经常使用的 注意在上述的操作过程中,无论是绝对路径下的这个文件还是相对路径下的这个文件,都是不存在的 Reader 使用 --> 文本文件 FileReader类所涉及到的一些方法 Fil…

Covert Communication 与选择波束(毫米波,大规模MIMO,可重构全息表面)

Covert Communication for Spatially Sparse mmWave Massive MIMO Channels 2023 TOC abstract 隐蔽通信,也称为低检测概率通信,旨在为合法用户提供可靠的通信,并防止任何其他用户检测到合法通信的发生。出于下一代通信系统安全链路的强烈…

C#学习系列相关之多线程(一)----常用多线程方法总结

一、多线程的用途 在介绍多线程的方法之前首先应当知道什么是多线程, 在一个进程内部可以执行多个任务,而这每一个任务我们就可以看成是一个线程。是程序使用CPU的基本单位。进程是拥有资源的基本单位, 线程是CPU调度的基本单位。多线程的作用…

iStoreOS搭建主路由有什么好处

iStoreOS 作为一种功能强大的软路由系统,搭建主路由可以带来多种好处。本文泪雪网将详细介绍 iStoreOS 搭建主路由的好处,包括增强网络安全性、提供更灵活的网络管理、实现高级功能和提升性能等方面。 一、增强网络安全性 iStoreOS 搭建主路由可以增强网…

计算机毕业设计 基于协调过滤算法的绿色食品推荐系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

YOLOV7改进-添加EIOU,SIOU,AlphaIOU,FocalEIOU

打开utils->general.py 找到bbox_iou(),345行左右,将下面的与源码进行替换 def bbox_iou(box1, box2, x1y1x2y2True, GIoUFalse, DIoUFalse, CIoUFalse, SIoUFalse, EIoUFalse, WIoUFalse, FocalFalse, alpha1, gamma0.5, sc…

【智慧校园源码】中小学智慧班牌系统,实现校园信息化交流建设,提高班级管理效率

智慧班牌系统源码 电子班牌原生小程序源码 智慧校园云平台系统源码 智慧班牌可以通过以云平台为基础,结合互联网、物联网系统进行校园管理,实现学校数据、教学资源共享,推进校园信息化交流建设。而展示在班牌终端的信息可以随时更改和上传新的…

使用nginx作为API网关

使用nginx作为API网关 如果我们需要部署反向代理,我们可能已经听说过 nginx。如果我们还没听说过,让我们在这篇文章谈一谈它,以及我们如何使用它作为API网关。 什么是nginx? nginx是一个HTTP服务器和反向代理,一个邮件代理服务…

【软件测试】自动化测试selenium(二)

文章目录 三. 掌握Selenium常用的API使用1. webdriver API2. 操作测试对象3. 添加等待4. 打印信息5. 浏览器的操作6. 键盘事件7. 鼠标事件8. 定位一组元素9. 多层框架/窗口定位10. 下拉框处理11. 弹窗处理12. 上传文件13. 关闭浏览器14. 切换窗口15. 截图操作 三. 掌握Selenium…

python实现 线性卷积用Toeplitz 矩阵运算

python实现 线性卷积用Toeplitz 矩阵运算 前言 在看论文的时候,发现Toeplitz 矩阵和线性卷积有关系,于是翻了程佩青老师的数字信号处理课本,发现是有讲过这点的。 Toeplitz 矩阵:从左上到右下的斜对角线都相同,如下…

性能测试工具 - LoadRunner

什么是性能测试? 性能测试就是测试人员利用性能测试工具模拟系统在不同情况下的性能指标是否正常。 性能测试工具 - LoadRunner 接下来介绍LoadRunner的作用和使用。 LoadRunner 就是一个很常见的性能测试工具,它有三个部分组成: 这三个组…