15
15
16
16
为了大家更好的掌握数据结构和算法,我把基础知识整理成了一张思维导图,包括下面这些内容:
17
17
18
+ <img src =" https://www.cxyhub.com/wp-content/uploads/2021/07/algorithm-c.png " >
19
+
20
+ ```
18
21
B树
19
- <details ><summary >显示更多</summary >
20
- 平衡的多叉树
22
+ 平衡的多叉树
21
23
性质
22
24
根结点至少有两个孩子
23
25
每个非根结点至少有M/2(上取整)个孩子,至多有M个孩子
32
34
为所有叶子节点增加一个链指针
33
35
所有关键字都在叶子节点出现
34
36
搜索
35
- 和B树基``本相同
37
+ 和B树基本相同
36
38
特性
37
39
所有关键字都出现在叶子节点的链表中(稠密索引),且链表中的关键字恰好是有序的
38
40
不可能在叶子结点命中
41
43
B*树
42
44
在B+树的非根和非叶子结点之间再增加指向兄弟的指针
43
45
子主题 2
44
- </details >
45
-
46
-
47
46
48
47
哈希
49
- <details ><summary >显示更多</summary >
50
48
搜索(检索)
51
49
在数据元素集合中查找是否存在关键字等于某个给定关键字数据元素的过程
52
50
结果
117
115
首先对关键码集合用散列函数计算散列地址,具有相同地址的关键码归于同一子集合,每个子集合称为一个桶,各个桶中的元素通过一个单链表链接起来,各链表的头结点组成一个向量,向量的元素个数与可能的桶数相同
118
116
布隆过滤器
119
117
当一个元素被加入集合时,通过k个散列函数将这个元素映射成一个位数组中的k个点,将它们置为1,检索时只要看是不是都是1,就可以,只要有一个零就不是,全是1,可能是
120
- </details >
121
118
122
119
排序
123
- <details ><summary >显示更多</summary >
124
120
概念
125
121
就是将一组杂乱无章的数据按照一定的规律(升序或降序)组织起来
126
122
数据表
158
154
非比较排序
159
155
计数排序
160
156
基数排序
161
- </details >
162
157
163
158
图
164
- <details ><summary >显示更多</summary >
165
159
由顶点集合及顶点间关系组成的一种数据结构
166
160
顶点和边
167
161
顶点
223
217
挨着找
224
218
单元最短路径
225
219
从在带权图的某一顶点出发,找出一条通往另一个顶点的最短路径,最短也即是沿路径各边的权值和最小
226
- </details >
227
220
228
221
初识数据结构
229
- <details ><summary >显示更多</summary >
230
222
概念
231
223
数据
232
224
描述客观事物的符号,是计算机中可以操作的对象,能被计算机识别,并输入给计算机处理的符号集合
287
279
时间效率高
288
280
且空间使用率低
289
281
简单性
290
- </details >
291
282
292
283
算法的复杂度
293
- <details ><summary >显示更多</summary >
294
284
时间复杂度
295
285
空间复杂度
296
286
算法分析的分类
312
302
递归总次数*每次递归次数
313
303
递归算法空间复杂度算法
314
304
N*每次递归空间大小
315
- </details >
316
305
317
306
递归
318
- <details ><summary >显示更多</summary >
319
307
递归定义
320
308
若一个对象部分的包含它自己或者用它自己给自己定义,则称这个对象是递归的
321
309
递归的过程
343
331
递归在解决某些问题的时候使得我们思考的方式的以简化,代码也更加简练,容易阅读
344
332
缺点
345
333
递归的实质就是自己调用自己,而函数的调用开销是很大的,系统要为每次函数调用分配空间存储空间,并将调用点信息压栈,而在函数的调用结束后,还要释放空间,弹栈恢复断点,如果递归方案的复杂度
346
- </details >
347
334
348
335
栈
349
- <details ><summary >显示更多</summary >
350
336
栈的概念
351
337
一种特殊的线性表,只允许从一端插入和删除数据
352
338
特点:后进先出
364
350
括号匹配
365
351
逆波兰表达式
366
352
迷宫算法
367
- </details >
368
353
369
354
队列
370
- <details ><summary >显示更多</summary >
371
355
只允许在一端插入数据,在另一端删除数据的特殊线性表
372
356
顺序队列
373
357
实现方式一
402
386
消息队列
403
387
排队现象
404
388
网络数据传输
405
- </details >
406
389
407
390
矩阵
408
- <details ><summary >显示更多</summary >
409
391
特殊矩阵
410
392
有很多值相同的元素或有许多零元素,且值相同的元素或零元素的分布有一定规律的矩阵
411
393
对称矩阵
423
405
矩阵逆置
424
406
行列互换
425
407
快速逆置
426
- </details >
427
408
428
409
初识树
429
- <details ><summary >显示更多</summary >
430
410
树的基本概念
431
411
由N个节点(N>=0)构成的集合
432
412
有一个特殊的节点,称为根节点,根节点没有前驱节点
486
466
表示出第一个结点的第一个孩子结点,也表示出每个结点的下一个兄弟结点
487
467
树的应用
488
468
电脑的目录
489
- </details >
490
469
491
470
树之二叉树
492
- <details ><summary >显示更多</summary >
493
471
概念
494
472
一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵分别称为左子树和右子树的二叉树组成
495
473
特点
530
508
若该结点的左子树非空,将该节点的左子树指针入队列
531
509
若该节点的右子树非空将该节点的右子树入队列
532
510
结束
533
- </details >
534
511
535
512
线索化二叉树
536
- <details ><summary >显示更多</summary >
537
513
线索化概念
538
514
按照二叉树的遍历将二叉树导成一个线性序列
539
515
普通二叉树可能存在的问题
561
537
线索二叉树
562
538
二叉树的结点加上线索的二叉树
563
539
对二叉树按照某种方式(前序、中序、后序)遍历使其称为线索二叉树的过程称为按照什么方法对二叉树进行线索化
564
- </details >
565
540
566
541
堆
567
- <details ><summary >显示更多</summary >
568
542
堆的概念
569
543
把所有的元素按照完全二叉树的方式存储在一个一维数组中并满足Ki<=K2*i+1且Ki<=K2*i+2(Ki>=K2*i+1且Ki>=K2*i+2),这个堆称为最小堆(最大堆)
570
544
堆的分类
582
556
堆的删除
583
557
堆的应用
584
558
优先级队列
585
- </details >
586
559
587
560
Huffman树
588
- <details ><summary >显示更多</summary >
589
561
概念
590
562
路径
591
563
路径长度
@@ -602,10 +574,8 @@ Huffman树
602
574
等长编码
603
575
不等长编码
604
576
文件压缩
605
- </details >
606
577
607
578
二叉搜索树
608
- <details ><summary >显示更多</summary >
609
579
性质
610
580
如果左子树不为空,则左子树上所有节点的值都小于根结点的值
611
581
它的右子树不为空,则右子树上所有节点的值都大于根结点的值
@@ -633,10 +603,8 @@ Huffman树
633
603
在它的右子树中寻找中序下的第一个结点(关键码最小),用它的值填补到被删除节点中,再来处理该结点的删除问题
634
604
二叉搜索树性能分析
635
605
最坏情况下,平均查找长度为O(n)一般情况下平均长度为O(lgn)
636
- </details >
637
606
638
607
AVL树
639
- <details ><summary >显示更多</summary >
640
608
AVL树性质
641
609
它的左右子树都是AVL树
642
610
左子树和右子树高度之差(简称平衡因子)的绝对值不超过1(-1、0、1)
@@ -663,10 +631,8 @@ AVL树
663
631
如果q的平衡因子为0,执行单循环恢复parent
664
632
如果q的平衡因子与parent平衡因子(正负)号相同,则执行一个单循环恢复parent
665
633
如果q的平衡因子与parent平衡因子(正负)号相反,则执行一个双旋转恢复parent
666
- </details >
667
634
668
635
红黑树
669
- <details ><summary >显示更多</summary >
670
636
概念
671
637
红黑树是一棵二叉搜索树,它在每个节点上增加了一个存储位来表示结点的颜色,保证最长路径不超过最短路径的两倍,近似平衡
672
638
性质
688
654
linux 内核
689
655
其他一些库
690
656
红黑树和AVL树的比较
691
- </ details >
657
+ ```
0 commit comments