概念
数据结构-逻辑结构:分为 线性结构和非线性结构
算法特性
1.有穷性:执行有穷步之后结束,且每一步都可在有穷时间内完成。
2.确定性:算法中每一条指令都必须有确切的含义,不能含糊不清。
3.输入(>=0)
4.输出(>=1)
5.有效性(可行性):算法的每个步骤都能有效执行并能在执行有限次后得到确定的结果。例如a=0,b/a就无效
线性结构(线性表)
存储结构
顺序存储(顺序表)
优点:通过索引(下标)快速地访问表中元素
缺点:插入和删除操作,会使得表中的大量元素进行移动,效率较低;面对扩容问题的时候,比较繁琐;
链式存储(链表)
优点:链表的插入和删除操作的效率较高,不需要考虑扩容问题。
缺点:链表在查找元素的时候,执行效率较低,需要从头开始,依次往后找。
![](https://img.haomeiwen.com/i1748661/02bc14ab903a602d.png)
![](https://img.haomeiwen.com/i1748661/8a752710632a4ba9.png)
![](https://img.haomeiwen.com/i1748661/bd6184d750575cc7.png)
队列与栈
![](https://img.haomeiwen.com/i1748661/d7fe8dffb4de27e1.png)
![](https://img.haomeiwen.com/i1748661/8f8b9cbd087d7d63.png)
广义表
有广义表LS1= ( a , (b, c), (d , e)),其长度为3,深度为2
串
又叫字符串,是一种特殊的线性数据结构,它的数据元素是字符,是取值范围受限的线性表
![](https://img.haomeiwen.com/i1748661/49101397fda4f9a9.png)
串的模式匹配
-
朴素模式匹配算法
image.png
- KMP模式匹配算法
![](https://img.haomeiwen.com/i1748661/f21466ae9f164272.png)
https://www.bilibili.com/video/BV1AY4y157yL/?spm_id_from=333.337.search-card.all.click&vd_source=f7f94f7f3c9bbe49ae72b304286148f3
![](https://img.haomeiwen.com/i1748661/015622f4cb6d4476.png)
![](https://img.haomeiwen.com/i1748661/5d9a7c561f2c1af3.png)
数组
![](https://img.haomeiwen.com/i1748661/1be12d4f85950ed6.png)
![](https://img.haomeiwen.com/i1748661/07e3acf44506d35f.png)
树
是一种重要的非线性结构,该结构中一个数据元素可以有两个或两个以上的直接后续元素,来描述客观世界中广泛存在的层次关系
二叉树
![](https://img.haomeiwen.com/i1748661/5b3fe5bd8ba6a556.png)
![](https://img.haomeiwen.com/i1748661/b2518c133e3c20c6.png)
二叉查找树(二叉排序树)
![](https://img.haomeiwen.com/i1748661/e36aca969b5ab8a5.png)
二叉平衡树
![](https://img.haomeiwen.com/i1748661/0d349e3da422c60f.png)
![](https://img.haomeiwen.com/i1748661/74811138636c4bed.png)
哈夫曼树(最优二叉树)
定义
给定N个权值作为N个叶子节点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树。哈夫曼树是带权路径长度最短的树,权值较大的节点离根较近。
构建步骤:
1,将所有左、右子树都为空的作为根节点。
2,在森林中选取两棵根节点的权值最小的树作为一棵新树的左、右子树,且置新树的附加根节点的权值为其左、右子树上根节点的权值之和。
3,从森林中删除这两棵树,同时把新树加入到森林中。
4,重复2,3步骤,直到森林中只有一棵树为止,此树便是哈夫曼树。
应用场景:
对字符集中的字符进行编码和译码
![](https://img.haomeiwen.com/i1748661/a7f99b61b141def9.png)
![](https://img.haomeiwen.com/i1748661/3b70c69b3cc6035c.png)
![](https://img.haomeiwen.com/i1748661/f1a8d6cfaeca1d7f.png)
B树
![](https://img.haomeiwen.com/i1748661/0cc0f950e0cddf24.png)
![](https://img.haomeiwen.com/i1748661/acc3de0bfc952531.png)
B+树
![](https://img.haomeiwen.com/i1748661/ec0fbd57a7b4c418.png)
![](https://img.haomeiwen.com/i1748661/cbf59e294764736a.png)
图
图的存储
![](https://img.haomeiwen.com/i1748661/e5da0e205f2da821.png)
![](https://img.haomeiwen.com/i1748661/16c98c559de329b1.png)
![](https://img.haomeiwen.com/i1748661/0b21a22676dfeff3.png)
其邻接矩阵为:
[ 0 1 1 0]
[ 0 0 0 0]
[ 0 0 0 1]
[ 1 0 0 0]
图的遍历
![](https://img.haomeiwen.com/i1748661/ed3e2036085724c7.png)
查找算法
顺序查找
![](https://img.haomeiwen.com/i1748661/757f800f09e68141.png)
平均查找长度:(n+1)/2
缺点:平均查找长度较大,查找效率低
优点:简单,对查找表的结构无要求,无论记录是否有序均可
折半查找(二分查找)
![](https://img.haomeiwen.com/i1748661/5d47fa3e2508d0cf.png)
前提:记录必须有序
适用于 表不易变动,经常进行查找的情况。
![](https://img.haomeiwen.com/i1748661/a24fbcbb745add65.png)
索引顺序查找(分块查找)
索引顺序查找又叫分块查找,它是介于顺序查找和折半查找之间。如果既要保持查找效率,又要能够满足表元素动态变化的需求,则可采用索引顺序查找的方法
在此查找方法中,除查找表外还需要为查找表建立一个“索引表”,索引表是分段有序的。将查找表分为若干个子表,为每一个子表建立一个索引项存储在索引表中,索引项包括两项内容:关键字项和指针项
![](https://img.haomeiwen.com/i1748661/731e3e9fd3a95af2.png)
哈希查找
![](https://img.haomeiwen.com/i1748661/e6add0c0b47c2371.png)
![](https://img.haomeiwen.com/i1748661/32533063c1151dc2.png)
![](https://img.haomeiwen.com/i1748661/5c05c0eacc8dfff0.png)
排序算法
![](https://img.haomeiwen.com/i1748661/4a3632ab2e217fc2.png)
稳定排序算法记忆:两只鸡鸡(
计基
)用木棍去插桶
里冒
泡的乌龟(归
)
图的算法
最小生成树
![](https://img.haomeiwen.com/i1748661/79ab20cc40ea1ff2.png)
最小生成树算法有很多,其中最经典的克鲁斯卡尔(Kruskal)算法和 普里姆(Prim)算法
- 克鲁斯卡尔(Kruskal)
在所有线中,找图中最小的边,并且不形成环形
![](https://img.haomeiwen.com/i1748661/8f366c521b84a862.png)
总长:2+3+3+4+5+6 = 23
最短路径
- 例子1
![](https://img.haomeiwen.com/i1748661/945cbf3fabf0e59e.png)
解法:
从S点触发,计算到每个节点的最短路径,一直结算到T,然后根据T的最小值反推出路径的走法。
![](https://img.haomeiwen.com/i1748661/d3ed6707047c65f3.png)
- 例子2:
![](https://img.haomeiwen.com/i1748661/03a8261640a03cfb.png)
解法:
![](https://img.haomeiwen.com/i1748661/d57a3f23a20fa9e5.png)
调度算法
![](https://img.haomeiwen.com/i1748661/d47055bd6fb95efb.png)
网友评论