3 - 数据结构及算法

概念

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

算法特性
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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容