软考 软件设计师 数据结构

news2024/9/25 11:11:25

大O表示法

在这里插入图片描述
在这里插入图片描述

常数阶,他的次数不会随着n的变大而变长

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
抓大头 取次方最大的
在这里插入图片描述

时间复杂度

在这里插入图片描述

没有循环 没有递归没有跟n相关的东西,那么他的复杂度就是o(1)
在这里插入图片描述
为什么i=i*2那里会加1阿?
因为需要加一次才能跳出循环1 2 4 8
中间加二是为了判断
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

循环的判断普遍比循环体多一个所以圈2的地方n+1


在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


空间复杂度

在这里插入图片描述

看定义了几个空间。上图z再多跟n也没关系所以是o(1)在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

i和j两个才完成一个o(n)的复杂度,完成代码的交换

这里没开辟新空间 只是定义了两个变量 所以是常数级别 O(1)


在这里插入图片描述

渐进符号

在这里插入图片描述

之前的是时间复杂度假设是f(n)转成o()这个记号,肯定比原来的大。
在这里插入图片描述
在这里插入图片描述

渐进上界的括号内要大于等于等式左边的计算结果,渐进下界的括号内要小于等于等式左边的计算结果,渐进紧致界括号内的只能等于等式左边的计算结果
在这里插入图片描述

渐进紧致阶只要上面有一个错的就都是错的

说白了就是,看见第一个符号,结果就要大于等于他,第二个就是结果小于等于,第三个就只能等于

递归式时间,空间复杂度

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

递归时间复杂度o(n)
在这里插入图片描述

n/2 等于1的时候就是调用结束的时候。除多少个2的x方
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

o(n方)
在这里插入图片描述

递归式主方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

线性结构和线性表定义

在这里插入图片描述

线性表的顺序存储结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
圈起来的是挪动后的式子
在这里插入图片描述

首相加未向乘以项数除以2
在这里插入图片描述

顺序表的实现

在这里插入图片描述
https://www.bilibili.com/video/BV1f44y1A7rx?p=16&spm_id_from=pageDriver&vd_source=6092f2dd634d869c97e5d08dde6f3844
插入实现转载b站观看到36分钟

顺序表插入时间复杂度

在这里插入图片描述

顺序表删除时间复杂度

在这里插入图片描述

在这里插入图片描述

删除n分支1的元素 删除第一个就是移动n-1,最后一个移动0个

顺序表查找时间复杂度

在这里插入图片描述

查找最好的情况是找到了最坏的情况是找不到都是一句话所以复杂度为o(1)

顺序表缺陷

在这里插入图片描述
后面有足够的空间才能原地扩容,如果后面的空间不够就回去随机找一个地址扩容,这样代价很大
在这里插入图片描述

线性表的链式存储

在这里插入图片描述

线性表:多开了一个空间 用于存储额外的信息
第一个没有前驱,最后一个没有后继

线性表链式存储代码

https://www.bilibili.com/video/BV1f44y1A7rx?p=24&vd_source=6092f2dd634d869c97e5d08dde6f3844 从16分钟开始

不带头结点的是指针指向空NULL,带头结点第一个节点不存储数据,只存储地址,就框框左边是空右边是下一个的地址
指针不初始化默认为空在这里插入图片描述

在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

带头结点的单链表插入(无特殊情况可直接用)

在这里插入图片描述

像插入一个节点在第二个位置
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
以上代码是在第二个数字前插入,如果想在之后插入可以让k+1

不带头结点的单链表插入

不带头结点所以找不到第零个节点,下面循环可以解决
在这里插入图片描述

单链表插入时间复杂度

在这里插入图片描述

带头结点和不带的单链表删除

在这里插入图片描述
带头结点
在这里插入图片描述

不带,删除的位序k>1没有问题,k=1的话就有问题了

单链表删除时间复杂度

在这里插入图片描述

单链表查找时间复杂度

在这里插入图片描述

循环单链表

在这里插入图片描述

最后尾节点不会指向空,会指向头结点 直接链起来

双链表

在这里插入图片描述

双链表就是比单链表多了一个指针域 指向前一个节点 就可以实现某节点都可以找到自身的上一个节点和下一个节点

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
插入操作并无循环
在这里插入图片描述
在这里插入图片描述

删除需要循环所以是o(n)

栈的顺序存储(先进先出)

栈的典型应用:递归
在这里插入图片描述

栈的链式存储

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

队列的顺序存储和循环队列

相当于日常生活中的排队
final全局常量

  • 入队队尾指针(rear)要加加*
    在这里插入图片描述

在这里插入图片描述

队列的链式存储和双端队列(了解即可 )

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

这种题可以自己模拟一个循环队列
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

这题目的意思就是这个队列在进元素的时候 可以在头和尾进 出只能在头出

栈与队列例题

入栈出栈后立马进入队列
队列出队和入队序列一样同时也是出栈序列

在这里插入图片描述

c确定后就不需要扩容,所以顺序存储效率更高

在这里插入图片描述

串(线性结构)

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

字串就是可以拆开另算的

空串是任意串的子串

串的模式匹配与朴素模式匹配(带时间复杂度 )

串有主串和模式串
从主串中找到一个和模式串相等的字串匹配成功返回指向 子串的起始位置,匹配失败如果从1开始返回0从0开始返回-1

在这里插入图片描述
在这里插入图片描述

手算next数组值(kmp)

在这里插入图片描述
这个就是算next值中最长值再加1
在这里插入图片描述

在这里插入图片描述
背公式

一维数组

在这里插入图片描述
在这里插入图片描述

二维数组

在这里插入图片描述
i行j列
在这里插入图片描述

数组计算公式及特性


在这里插入图片描述


方法二套公式
在这里插入图片描述

对称矩阵

二维数组就是一个矩阵
二维数组压缩在一个一维数组里
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
转化为一维数组

**等差数列求和的公式 **

在这里插入图片描述
从1开始的1区别就是让每个i和j都减去1 如上公式

i<=j是下三角

三对角矩阵(公式)

只存储中间元素可以不用存储两边的元素
在这里插入图片描述

二维数组转一维,看他前面有几个元素
在这里插入图片描述

稀疏矩阵(三元组表和十字链表)

表这么大只存储了8个数据 如何压缩?
在这里插入图片描述
在这里插入图片描述

利用三元组表顺序村粗
在这里插入图片描述

十字链表


在这里插入图片描述

树形结构与树的定义(递归)

在这里插入图片描述

树的基本概念

在这里插入图片描述

兄弟就是他们呢几个有共同的父节点他们几个就是兄弟
父节点有几个子节点就是有几个度
度为0是的叶子节点
度不为零的节点为分支节点
树的度为最大节点的度

树的性质1

在这里插入图片描述

在这里插入图片描述

树的性质2

在这里插入图片描述

树的性质3

在这里插入图片描述

树的性质4

在这里插入图片描述
在这里插入图片描述

2.x意思是两行还多


在这里插入图片描述

在这里插入图片描述

二叉树的定义

在这里插入图片描述

二叉树的性质1,2,3

在这里插入图片描述

满二叉树与完全二叉树

在这里插入图片描述

二叉树的性质4

在这里插入图片描述

************在这里插入图片描述
模拟推法

二叉树的顺序存储

在这里插入图片描述

完全二叉树适合顺序存储
双亲就是父节点
单支树是除了叶子节点都是1

二叉树链式存储

二叉树先序遍历

在这里插入图片描述
**根左右 **

二叉树中序遍历

左 根 右
在这里插入图片描述

二叉树的后序遍历

左 右 根
在这里插入图片描述

层次遍历

在这里插入图片描述

根据遍历序列构造二叉树

在这里插入图片描述

先序加中序构造二叉树

在这里插入图片描述

后序加中序构造二叉树

在这里插入图片描述

最后一个肯定是跟节点,所以后序的bca都是跟节点,找到根节点后再跑到中序里

层序加中序遍历二叉树

层序是从上往下从左往右
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

平衡二叉树

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二叉树排序树定义

有序序列是用中序遍历,这句话很重要
在这里插入图片描述

二叉排序树构造

在这里插入图片描述

一般第一个就是根节点
在这里插入图片描述

最优二叉树(哈夫曼树)

权值带权路径
在这里插入图片描述
在这里插入图片描述

最优二叉树构造

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

最优二叉树(软考)

在这里插入图片描述

**求节点个数 **
这里的n注意是题目给的n值,而不是树的高度

最优二叉树构造规则

构造1233
在这里插入图片描述

构造最优二叉树

在这里插入图片描述

哈夫曼编码定义

左0右1
在这里插入图片描述
在这里插入图片描述

哈夫曼编码压缩比

因为3位数的二进制可以表示6个字符,而2位只能表示4个,而这里有abcde5个字符
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

完全二叉树第一层到h-1层必须是满的所以排除a
左右高度之差不为1所以不是平衡二叉树


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

线索二叉树的定义

在这里插入图片描述

在这里插入图片描述

图形结构与图的定义

图可以有多个前驱和多个后继
在这里插入图片描述

有向图与无向图

![v!v](https://img-blog.csdnimg.cn/9c20b212096e422f8390c7f0f35a7260.png)

完全图

在这里插入图片描述
在这里插入图片描述

无向图就是用首相加尾相乘以项数除以2

在这里插入图片描述

顶点的度

在这里插入图片描述

出度和入度是关于有向图,度就是入度加出度
在这里插入图片描述

路径

在这里插入图片描述
在这里插入图片描述

连通图与强连通图

在这里插入图片描述
连通图针对无向图
在这里插入图片描述

有向图中必须具有两条路径才满足强连通图
在这里插入图片描述
在这里插入图片描述

邻接矩阵

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

邻接表

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

稠密图与稀疏图

完全图类似稠密图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

网(看一眼)

在这里插入图片描述

在权值里两个顶点没有边的话就用无穷表示

图的遍历

在这里插入图片描述

图的深度优先遍历

当前所处的顶点还有邻接的顶点(出边)并且没有被访问过的话那么他就回去访问这些顶点

https://www.bilibili.com/video/BV1jY411b73f/?p=185&spm_id_from=pageDriver&vd_source=6092f2dd634d869c97e5d08dde6f3844
在这里插入图片描述

深度优先遍历时间复杂度(背)

在这里插入图片描述

广度优先遍历和时间复杂度(队列实现)

在这里插入图片描述

深度只要顶点还能访问就会一直访问下去

在这里插入图片描述

广度优先是先访问临界点访问完了。 直接写下来
上图就是访问v1得到的
在这里插入图片描述

拓扑排序

在这里插入图片描述

在这里插入图片描述

如果要完成顶点3应该先完成顶点3的直接前驱活动
aov网是个有向无环图


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

有趣的回文检测

英文中有很多的回文词&#xff0c;回文词的拼法十分有趣&#xff0c;无论是从前往后拼读&#xff0c;还是从后往前拼读&#xff0c;他们的拼法和词义都不变。例如&#xff1a;dad&#xff08;爸爸&#xff09;&#xff0c;mum&#xff08;妈妈&#xff09;&#xff0c;noon&…

flac格式怎么转换mp3格式?

flac格式怎么转换mp3格式&#xff1f;什么是flac格式呢&#xff1f;通常来说&#xff0c;flac是一种无损音频压缩编码。flac格式主要特点就是无损压缩。对于flac格式而言&#xff0c;与其他有损压缩编码不同&#xff0c;比如与aac、mp3等相较而言&#xff0c;flac对原有的音频信…

PySide6/PyQT多线程之 生命周期:从创建到销毁的完整解析

前言 在PySide6/PyQT 中使用多线程时&#xff0c;多线程生命周期是一个重要的概念。如果不能正确地管理多线程生命周期&#xff0c;可能会导致程序崩溃、内存泄漏等问题。 在前面的文章中有介绍到 PySide6/PyQT 可以实现多线程的多个类&#xff0c; 有 QObject、QThread、QRun…

【C++刷题笔记】继承和多态常见面试题汇总

对C继承和多态方面的部分面试题进行了汇总 一、概念考察 1. 下面哪种面向对象的方法可以让你变得富有( ) A: 继承 B: 封装 C: 多态 D: 抽象 2. ( )是面向对象程序设计语言中的一种机制。这种机制实现了方法的定义与具体的对象无关&#xff0c;而对方法的调用则可以关联于具体…

双目测距--4 双目立体匹配 获取深度图

在这之前需要已经完成双目标定&#xff0c;这里是利用双目标定结果利用SGBM算法获取深度图&#xff0c;以及转伪彩图。 目录 StereoSGBM用到的参数&#xff1a; 一、 预处理参数 二 、代价参数 三 、动态规划参数 四、后处理参数 reprojectImageTo3D函数 获取真实距离 …

ChatGPT - 快速生成 流程图

文章目录 Prompt输出Copy 到 drawio Prompt 我想做一个研发标准化的流程,但是我是一个小白,不懂研发管理的流 程,我希望你作为一个经验丰富的技术管理人员,请帮我梳理一个完整流程,包括需求分析、概要设计,代码走查等等,输出的节点不少于18个,包含逻辑判断的分支,要通循实事求…

【SpringCloud微服务实践】服务注册与发现

注册与发现 在之前的示例中&#xff0c;采取的是硬编码的方式&#xff0c;需要调用的微服务的地址是被我们写死在文件或代码中的。在传统应用程序中&#xff0c;一般都是这么做的&#xff0c;然而这种方式存在不少缺陷&#xff1a; 静态配置&#xff1a;因为是写死的网络地址…

力扣sql中等篇练习(十五)

力扣sql中等篇练习(十五) 1 页面推荐 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 a 示例输入 b 示例输出 1.2 示例sql语句 # ①找到1所对应的朋友 ②找到其朋友喜欢的页面 ③删选掉自己喜欢的页面 # 可能朋友中存在喜欢同样的界面 SELECT distinct page_id reco…

Java每日一练(20230507) 组合总和、缺失的正数、单词搜索II

目录 1. 组合总和 &#x1f31f;&#x1f31f; 2. 缺失的第一个正数 &#x1f31f;&#x1f31f;&#x1f31f; 3. 单词搜索 II &#x1f31f;&#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/…

数字化转型导师坚鹏:企业干部如何进行数字化转型

企业干部如何进行数字化转型 ——数字化转型背景下重塑企业干部核心竞争力 授课背景&#xff1a; 很多银行存在以下问题&#xff1a; 企业干部不知道如何进行数字化转型&#xff1f; 企业干部不清楚银行数字化能力模型的内涵&#xff1f; 企业干部不知道如何通过数字化…

总结843

学习目标&#xff1a; 5月&#xff08;张宇强化18讲&#xff0c;背诵25篇短文&#xff0c;熟词僻义300词基础词&#xff09; 每日必复习&#xff08;5分钟&#xff09; 做记录本上3道题 学习内容&#xff1a; 暴力英语&#xff1a;回环诵读&#xff0c;继续背一篇阅读理解&…

前端实战项目:网易云静态页面——轮播图

前言 目前这个前端项目持续更新中~ 网易云静态页面——导航栏 Flex布局 文章目录 前言实现目标静态实现页面大致样子添加模糊的背景图添加图片下载客户端部分轮播图小圆点第一个小圆点变成红色以及当鼠标放上其他任一小圆点也变成红色左右按钮总代码 动态实现 实现目标 建立相…

Shift_RAM ip核的使用——ROM调用mif文件、传至Shift_RAM输出

Altera_Shift Register&#xff08;RAM-based&#xff09;ip核 前言1.创建mif文件&#xff0c;通过ROM ip核调用该mif文件1.1创建mif文件1.2顺序填充mif文件1.3创建ROM ip核调用mif文件 2.计数器读取mif文件中的数据2.1写一个0-15的循环计数器2.2实例化ROM ip核、调用计数器模块…

【C++学习】类和对象--多态

多态的基本语法 多态是C面向对象三大特性之一 静态多态&#xff1a; 函数重载和运算符重载属于静态多态&#xff0c;复用函数名&#xff08;函数地址早绑定&#xff0c;编译阶段确定函数地址&#xff09; 动态多态&#xff1a; 派生类和虚函数实现运行时多态&#xff08;函数地…

Python |浅谈爬虫的由来

本文概要 本篇文章主要介绍Python爬虫的由来以及过程&#xff0c;适合刚入门爬虫的同学&#xff0c;文中描述和代码示例很详细&#xff0c;干货满满&#xff0c;感兴趣的小伙伴快来一起学习吧&#xff01; &#x1f31f;&#x1f31f;&#x1f31f;个人简介&#x1f31f;&…

快速搭建一个spring入门案例及整合日志

目录 环境要求 构建模块 程序开发 引入依赖 创建java类 创建配置文件 创建测试类测试 运行测试程序 程序分析 spring中配置启用Log4j2日志框架 Log4j2日志概述 引入Log4j2依赖 加入日志配置文件 测试 使用日志 环境要求 JDK&#xff1a;Java17&#xff08;Spring6要…

Linux高性能服务器编程|阅读笔记:第6章 - 高级I/O函数

目录 简介6.1 pipe函数6.2 dup函数和dup2函数6.3 readv函数和writev函数6.4 sendfile函数6.5 mmap函数和munmap函数6.6 splice函数6.7 tee函数6.8 fcntl函数结语 简介 Hello&#xff01; 非常感谢您阅读海轰的文章&#xff0c;倘若文中有错误的地方&#xff0c;欢迎您指出&…

10-Vue技术栈之脚手架配置代理(解决跨域问题)+ GitHub用户搜索案例

目录 1、基本使用1.1 方法一1.2 方法二 2、GitHub用户搜索案例 1、基本使用 1.1 方法一 ​ 在vue.config.js中添加如下配置&#xff1a; devServer:{proxy:"http://localhost:5000" }说明&#xff1a; 优点&#xff1a;配置简单&#xff0c;请求资源时直接发给前…

用三角函数解决几何问题

如图&#xff0c;在 △ A B C \triangle ABC △ABC 中&#xff0c; A C > 5 , A B > A C AC>5,AB>AC AC>5,AB>AC&#xff0c;点 E E E 是 A B AB AB 上一点&#xff0c;链接 C E CE CE&#xff0c;将 △ B C E \triangle BCE △BCE 沿 C E CE CE 折叠&…

【unity之数据持久化】-Unity公共类PlayerPrefs

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…