美文网首页
3 - 数据结构及算法

3 - 数据结构及算法

作者: heichong | 来源:发表于2024-04-11 13:10 被阅读0次

概念

数据结构-逻辑结构:分为 线性结构和非线性结构

算法特性
1.有穷性:执行有穷步之后结束,且每一步都可在有穷时间内完成。
2.确定性:算法中每一条指令都必须有确切的含义,不能含糊不清。
3.输入(>=0)
4.输出(>=1)
5.有效性(可行性):算法的每个步骤都能有效执行并能在执行有限次后得到确定的结果。例如a=0,b/a就无效

线性结构(线性表)

存储结构

顺序存储(顺序表)
优点:通过索引(下标)快速地访问表中元素
缺点:插入和删除操作,会使得表中的大量元素进行移动,效率较低;面对扩容问题的时候,比较繁琐;

链式存储(链表)
优点:链表的插入和删除操作的效率较高,不需要考虑扩容问题。
缺点:链表在查找元素的时候,执行效率较低,需要从头开始,依次往后找。

image.png
链表的操作
例1

队列与栈

image.png
例1

广义表

有广义表LS1= ( a , (b, c), (d , e)),其长度为3,深度为2

又叫字符串,是一种特殊的线性数据结构,它的数据元素是字符,是取值范围受限的线性表

image.png

串的模式匹配

  • 朴素模式匹配算法


    image.png
  • KMP模式匹配算法
KMP匹配过程
https://www.bilibili.com/video/BV1AY4y157yL/?spm_id_from=333.337.search-card.all.click&vd_source=f7f94f7f3c9bbe49ae72b304286148f3 Next数组计算方法

https://www.bilibili.com/video/BV16X4y137qw/?spm_id_from=333.788.recommend_more_video.1&vd_source=f7f94f7f3c9bbe49ae72b304286148f3

例1

数组

数组元素地址计算方法 例1

是一种重要的非线性结构,该结构中一个数据元素可以有两个或两个以上的直接后续元素,来描述客观世界中广泛存在的层次关系

二叉树

二叉树特性 二叉树遍历方式

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

image.png

二叉平衡树

image.png 例1

哈夫曼树(最优二叉树)

定义
给定N个权值作为N个叶子节点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树。哈夫曼树是带权路径长度最短的树,权值较大的节点离根较近。

构建步骤:
1,将所有左、右子树都为空的作为根节点。
2,在森林中选取两棵根节点的权值最小的树作为一棵新树的左、右子树,且置新树的附加根节点的权值为其左、右子树上根节点的权值之和。
3,从森林中删除这两棵树,同时把新树加入到森林中。
4,重复2,3步骤,直到森林中只有一棵树为止,此树便是哈夫曼树。

应用场景:
对字符集中的字符进行编码和译码

构建过程1 构建过程2 例1

B树

image.png
image.png

B+树

B+树 B+树

图的存储

邻接矩阵
邻接链表 例1

其邻接矩阵为:
[ 0 1 1 0]
[ 0 0 0 0]
[ 0 0 0 1]
[ 1 0 0 0]

图的遍历

遍历方法

查找算法

顺序查找

image.png

平均查找长度:(n+1)/2
缺点:平均查找长度较大,查找效率低
优点:简单,对查找表的结构无要求,无论记录是否有序均可

折半查找(二分查找)

image.png

前提:记录必须有序
适用于 表不易变动,经常进行查找的情况。


例1

索引顺序查找(分块查找)

索引顺序查找又叫分块查找,它是介于顺序查找和折半查找之间。如果既要保持查找效率,又要能够满足表元素动态变化的需求,则可采用索引顺序查找的方法

在此查找方法中,除查找表外还需要为查找表建立一个“索引表”,索引表是分段有序的。将查找表分为若干个子表,为每一个子表建立一个索引项存储在索引表中,索引项包括两项内容:关键字项和指针项


索引顺序查找

哈希查找

哈希查找
hash冲突的解决办法
例1

排序算法

排序算法
稳定排序算法记忆:两只鸡鸡(计基)用木棍去插桶泡的乌龟(

图的算法

最小生成树

image.png

最小生成树算法有很多,其中最经典的克鲁斯卡尔(Kruskal)算法和 普里姆(Prim)算法

  • 克鲁斯卡尔(Kruskal)
    在所有线中,找图中最小的边,并且不形成环形
image.png

总长:2+3+3+4+5+6 = 23

最短路径

  • 例子1
image.png

解法:
从S点触发,计算到每个节点的最短路径,一直结算到T,然后根据T的最小值反推出路径的走法。


image.png
  • 例子2:
image.png

解法:


image.png

调度算法

image.png

相关文章

网友评论

      本文标题:3 - 数据结构及算法

      本文链接:https://www.haomeiwen.com/subject/jhzztjtx.html