软考 软件设计师 数据结构

大O表示法

软考 软件设计师 数据结构_第1张图片
软考 软件设计师 数据结构_第2张图片

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

软考 软件设计师 数据结构_第3张图片
软考 软件设计师 数据结构_第4张图片
软考 软件设计师 数据结构_第5张图片
抓大头 取次方最大的
软考 软件设计师 数据结构_第6张图片

时间复杂度

软考 软件设计师 数据结构_第7张图片

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


软考 软件设计师 数据结构_第10张图片

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


软考 软件设计师 数据结构_第11张图片
软考 软件设计师 数据结构_第12张图片


软考 软件设计师 数据结构_第13张图片


空间复杂度

软考 软件设计师 数据结构_第14张图片

看定义了几个空间。上图z再多跟n也没关系所以是o(1)软考 软件设计师 数据结构_第15张图片


软考 软件设计师 数据结构_第16张图片
软考 软件设计师 数据结构_第17张图片
软考 软件设计师 数据结构_第18张图片
软考 软件设计师 数据结构_第19张图片
软考 软件设计师 数据结构_第20张图片
软考 软件设计师 数据结构_第21张图片


软考 软件设计师 数据结构_第22张图片

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

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


软考 软件设计师 数据结构_第23张图片

渐进符号

在这里插入图片描述

之前的是时间复杂度假设是f(n)转成o()这个记号,肯定比原来的大。
软考 软件设计师 数据结构_第24张图片
软考 软件设计师 数据结构_第25张图片

渐进上界的括号内要大于等于等式左边的计算结果,渐进下界的括号内要小于等于等式左边的计算结果,渐进紧致界括号内的只能等于等式左边的计算结果
软考 软件设计师 数据结构_第26张图片

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

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

递归式时间,空间复杂度

软考 软件设计师 数据结构_第27张图片
软考 软件设计师 数据结构_第28张图片
软考 软件设计师 数据结构_第29张图片
软考 软件设计师 数据结构_第30张图片

递归时间复杂度o(n)
软考 软件设计师 数据结构_第31张图片

n/2 等于1的时候就是调用结束的时候。除多少个2的x方
软考 软件设计师 数据结构_第32张图片
软考 软件设计师 数据结构_第33张图片


软考 软件设计师 数据结构_第34张图片
软考 软件设计师 数据结构_第35张图片

o(n方)
软考 软件设计师 数据结构_第36张图片

递归式主方法

软考 软件设计师 数据结构_第37张图片
软考 软件设计师 数据结构_第38张图片
软考 软件设计师 数据结构_第39张图片


在这里插入图片描述
软考 软件设计师 数据结构_第40张图片
软考 软件设计师 数据结构_第41张图片
软考 软件设计师 数据结构_第42张图片
软考 软件设计师 数据结构_第43张图片
软考 软件设计师 数据结构_第44张图片


软考 软件设计师 数据结构_第45张图片
软考 软件设计师 数据结构_第46张图片
软考 软件设计师 数据结构_第47张图片
软考 软件设计师 数据结构_第48张图片

线性结构和线性表定义

软考 软件设计师 数据结构_第49张图片

线性表的顺序存储结构

软考 软件设计师 数据结构_第50张图片
软考 软件设计师 数据结构_第51张图片
软考 软件设计师 数据结构_第52张图片
软考 软件设计师 数据结构_第53张图片
软考 软件设计师 数据结构_第54张图片
圈起来的是挪动后的式子
软考 软件设计师 数据结构_第55张图片

首相加未向乘以项数除以2
软考 软件设计师 数据结构_第56张图片

顺序表的实现

软考 软件设计师 数据结构_第57张图片
https://www.bilibili.com/video/BV1f44y1A7rx?p=16&spm_id_from=pageDriver&vd_source=6092f2dd634d869c97e5d08dde6f3844
插入实现转载b站观看到36分钟

顺序表插入时间复杂度

软考 软件设计师 数据结构_第58张图片

顺序表删除时间复杂度

软考 软件设计师 数据结构_第59张图片

软考 软件设计师 数据结构_第60张图片

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

顺序表查找时间复杂度

软考 软件设计师 数据结构_第61张图片

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

顺序表缺陷

软考 软件设计师 数据结构_第62张图片
后面有足够的空间才能原地扩容,如果后面的空间不够就回去随机找一个地址扩容,这样代价很大
软考 软件设计师 数据结构_第63张图片

线性表的链式存储

软考 软件设计师 数据结构_第64张图片

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

线性表链式存储代码

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

不带头结点的是指针指向空NULL,带头结点第一个节点不存储数据,只存储地址,就框框左边是空右边是下一个的地址
指针不初始化默认为空软考 软件设计师 数据结构_第65张图片

软考 软件设计师 数据结构_第66张图片


软考 软件设计师 数据结构_第67张图片
软考 软件设计师 数据结构_第68张图片

软考 软件设计师 数据结构_第69张图片

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

软考 软件设计师 数据结构_第70张图片

像插入一个节点在第二个位置
软考 软件设计师 数据结构_第71张图片
软考 软件设计师 数据结构_第72张图片


软考 软件设计师 数据结构_第73张图片
以上代码是在第二个数字前插入,如果想在之后插入可以让k+1

不带头结点的单链表插入

不带头结点所以找不到第零个节点,下面循环可以解决
软考 软件设计师 数据结构_第74张图片

单链表插入时间复杂度

软考 软件设计师 数据结构_第75张图片

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

软考 软件设计师 数据结构_第76张图片
带头结点
软考 软件设计师 数据结构_第77张图片

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

单链表删除时间复杂度

软考 软件设计师 数据结构_第78张图片

单链表查找时间复杂度

软考 软件设计师 数据结构_第79张图片

循环单链表

软考 软件设计师 数据结构_第80张图片

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

双链表

软考 软件设计师 数据结构_第81张图片

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

软考 软件设计师 数据结构_第82张图片


软考 软件设计师 数据结构_第83张图片


软考 软件设计师 数据结构_第84张图片
软考 软件设计师 数据结构_第85张图片
软考 软件设计师 数据结构_第86张图片
插入操作并无循环
软考 软件设计师 数据结构_第87张图片
软考 软件设计师 数据结构_第88张图片

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

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

栈的典型应用:递归
软考 软件设计师 数据结构_第89张图片

栈的链式存储

软考 软件设计师 数据结构_第90张图片
软考 软件设计师 数据结构_第91张图片
软考 软件设计师 数据结构_第92张图片
软考 软件设计师 数据结构_第93张图片

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

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

  • 入队队尾指针(rear)要加加*
    软考 软件设计师 数据结构_第94张图片

软考 软件设计师 数据结构_第95张图片

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

软考 软件设计师 数据结构_第96张图片
软考 软件设计师 数据结构_第97张图片
软考 软件设计师 数据结构_第98张图片


软考 软件设计师 数据结构_第99张图片

这种题可以自己模拟一个循环队列
软考 软件设计师 数据结构_第100张图片
软考 软件设计师 数据结构_第101张图片
软考 软件设计师 数据结构_第102张图片


软考 软件设计师 数据结构_第103张图片

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

栈与队列例题

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

软考 软件设计师 数据结构_第104张图片

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

软考 软件设计师 数据结构_第105张图片

串(线性结构)

软考 软件设计师 数据结构_第106张图片
软考 软件设计师 数据结构_第107张图片


软考 软件设计师 数据结构_第108张图片


软考 软件设计师 数据结构_第109张图片

字串就是可以拆开另算的

空串是任意串的子串

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

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

软考 软件设计师 数据结构_第110张图片
软考 软件设计师 数据结构_第111张图片

手算next数组值(kmp)

软考 软件设计师 数据结构_第112张图片
这个就是算next值中最长值再加1
软考 软件设计师 数据结构_第113张图片

软考 软件设计师 数据结构_第114张图片
背公式

一维数组

软考 软件设计师 数据结构_第115张图片
软考 软件设计师 数据结构_第116张图片

二维数组

软考 软件设计师 数据结构_第117张图片
i行j列
软考 软件设计师 数据结构_第118张图片

数组计算公式及特性

软考 软件设计师 数据结构_第119张图片
软考 软件设计师 数据结构_第120张图片


方法二套公式
软考 软件设计师 数据结构_第121张图片

对称矩阵

二维数组就是一个矩阵
二维数组压缩在一个一维数组里
软考 软件设计师 数据结构_第122张图片
软考 软件设计师 数据结构_第123张图片
软考 软件设计师 数据结构_第124张图片
转化为一维数组

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

软考 软件设计师 数据结构_第125张图片
从1开始的1区别就是让每个i和j都减去1 如上公式

i<=j是下三角

三对角矩阵(公式)

软考 软件设计师 数据结构_第126张图片

只存储中间元素可以不用存储两边的元素
软考 软件设计师 数据结构_第127张图片

二维数组转一维,看他前面有几个元素
软考 软件设计师 数据结构_第128张图片

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

表这么大只存储了8个数据 如何压缩?
软考 软件设计师 数据结构_第129张图片
软考 软件设计师 数据结构_第130张图片

利用三元组表顺序村粗
软考 软件设计师 数据结构_第131张图片

十字链表


软考 软件设计师 数据结构_第132张图片

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

软考 软件设计师 数据结构_第133张图片

树的基本概念

软考 软件设计师 数据结构_第134张图片

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

树的性质1

软考 软件设计师 数据结构_第135张图片

软考 软件设计师 数据结构_第136张图片

树的性质2

软考 软件设计师 数据结构_第137张图片

树的性质3

软考 软件设计师 数据结构_第138张图片

树的性质4

软考 软件设计师 数据结构_第139张图片
软考 软件设计师 数据结构_第140张图片

2.x意思是两行还多


软考 软件设计师 数据结构_第141张图片

软考 软件设计师 数据结构_第142张图片

二叉树的定义

软考 软件设计师 数据结构_第143张图片

二叉树的性质1,2,3

软考 软件设计师 数据结构_第144张图片

满二叉树与完全二叉树

软考 软件设计师 数据结构_第145张图片

二叉树的性质4

软考 软件设计师 数据结构_第146张图片

************软考 软件设计师 数据结构_第147张图片
模拟推法

二叉树的顺序存储

软考 软件设计师 数据结构_第148张图片

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

二叉树链式存储

软考 软件设计师 数据结构_第149张图片

二叉树先序遍历

软考 软件设计师 数据结构_第150张图片
**根左右 **

二叉树中序遍历

左 根 右
软考 软件设计师 数据结构_第151张图片

二叉树的后序遍历

左 右 根
软考 软件设计师 数据结构_第152张图片

层次遍历

软考 软件设计师 数据结构_第153张图片

根据遍历序列构造二叉树

软考 软件设计师 数据结构_第154张图片

先序加中序构造二叉树

软考 软件设计师 数据结构_第155张图片

后序加中序构造二叉树

软考 软件设计师 数据结构_第156张图片

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

层序加中序遍历二叉树

层序是从上往下从左往右
软考 软件设计师 数据结构_第157张图片

软考 软件设计师 数据结构_第158张图片
软考 软件设计师 数据结构_第159张图片

平衡二叉树

软考 软件设计师 数据结构_第160张图片
软考 软件设计师 数据结构_第161张图片
软考 软件设计师 数据结构_第162张图片

二叉树排序树定义

有序序列是用中序遍历,这句话很重要
软考 软件设计师 数据结构_第163张图片

二叉排序树构造

软考 软件设计师 数据结构_第164张图片

一般第一个就是根节点
软考 软件设计师 数据结构_第165张图片

最优二叉树(哈夫曼树)

权值带权路径
软考 软件设计师 数据结构_第166张图片
软考 软件设计师 数据结构_第167张图片

最优二叉树构造

软考 软件设计师 数据结构_第168张图片
软考 软件设计师 数据结构_第169张图片

软考 软件设计师 数据结构_第170张图片

软考 软件设计师 数据结构_第171张图片

最优二叉树(软考)

软考 软件设计师 数据结构_第172张图片

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

最优二叉树构造规则

构造1233
软考 软件设计师 数据结构_第173张图片

构造最优二叉树

软考 软件设计师 数据结构_第174张图片

哈夫曼编码定义

左0右1
软考 软件设计师 数据结构_第175张图片
软考 软件设计师 数据结构_第176张图片

哈夫曼编码压缩比

因为3位数的二进制可以表示6个字符,而2位只能表示4个,而这里有abcde5个字符
软考 软件设计师 数据结构_第177张图片
软考 软件设计师 数据结构_第178张图片
软考 软件设计师 数据结构_第179张图片

软考 软件设计师 数据结构_第180张图片

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


软考 软件设计师 数据结构_第181张图片
软考 软件设计师 数据结构_第182张图片
软考 软件设计师 数据结构_第183张图片

线索二叉树的定义

软考 软件设计师 数据结构_第184张图片

软考 软件设计师 数据结构_第185张图片

图形结构与图的定义

图可以有多个前驱和多个后继
软考 软件设计师 数据结构_第186张图片

有向图与无向图

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

完全图

软考 软件设计师 数据结构_第187张图片
软考 软件设计师 数据结构_第188张图片

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

软考 软件设计师 数据结构_第189张图片

顶点的度

软考 软件设计师 数据结构_第190张图片

出度和入度是关于有向图,度就是入度加出度
软考 软件设计师 数据结构_第191张图片

路径

软考 软件设计师 数据结构_第192张图片
软考 软件设计师 数据结构_第193张图片

连通图与强连通图

软考 软件设计师 数据结构_第194张图片
连通图针对无向图
软考 软件设计师 数据结构_第195张图片

有向图中必须具有两条路径才满足强连通图
软考 软件设计师 数据结构_第196张图片
软考 软件设计师 数据结构_第197张图片

邻接矩阵

软考 软件设计师 数据结构_第198张图片
软考 软件设计师 数据结构_第199张图片
软考 软件设计师 数据结构_第200张图片

邻接表

软考 软件设计师 数据结构_第201张图片
软考 软件设计师 数据结构_第202张图片
软考 软件设计师 数据结构_第203张图片
软考 软件设计师 数据结构_第204张图片

稠密图与稀疏图

完全图类似稠密图
软考 软件设计师 数据结构_第205张图片
软考 软件设计师 数据结构_第206张图片
在这里插入图片描述

软考 软件设计师 数据结构_第207张图片

网(看一眼)

软考 软件设计师 数据结构_第208张图片

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

图的遍历

软考 软件设计师 数据结构_第209张图片

图的深度优先遍历

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

https://www.bilibili.com/video/BV1jY411b73f/?p=185&spm_id_from=pageDriver&vd_source=6092f2dd634d869c97e5d08dde6f3844
软考 软件设计师 数据结构_第210张图片

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

软考 软件设计师 数据结构_第211张图片

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

软考 软件设计师 数据结构_第212张图片

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

软考 软件设计师 数据结构_第213张图片

广度优先是先访问临界点访问完了。 直接写下来
上图就是访问v1得到的
软考 软件设计师 数据结构_第214张图片

拓扑排序

软考 软件设计师 数据结构_第215张图片

软考 软件设计师 数据结构_第216张图片

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


软考 软件设计师 数据结构_第217张图片

软考 软件设计师 数据结构_第218张图片

软考 软件设计师 数据结构_第219张图片

你可能感兴趣的:(数据结构,算法,c语言)