数据结构与算法学习

一、稀疏数组和队列

1.1稀疏数组

1.2队列

二、链表

2.1单向链表

2.2双向链表

2.3单向环形链表

三、栈

3.1栈的快速入门

3.2中缀表达式转后缀表达式

3.3逆波兰计算器

四、递归

4.1递归调用机制

4.2迷宫问题

4.3八皇后问题

五、排序算法

5.1时间复杂度

5.2冒泡排序

5.3快速排序

5.4选择排序

5.5插入排序

5.6希尔排序

5.7归并排序

5.8基数排序

六、查找算法

6.1线性查找算法

6.2二分查找算法

6.3插值查找算法

6.4黄金分割查找算法

七、哈希表

八、树结构

8.1二叉树

8.2顺序存储二叉树

8.3线索化二叉树

8.4堆排序

8.5赫夫曼树

8.6赫夫曼编码

8.7二叉排序树

8.8平衡二叉树

8.9二叉树与B树

9.0 2-3树

9.1 B树、B+树和B*树

九、图

9.1图基本介绍

9.2图的表示方式

9.3图的快速入门

9.4图的深度优先遍历

9.5图的广度优先遍历

9.6图的深度优先VS广度优先
在这里插入图片描述

dfs:
1.先把结点A,B,C,D,E依次存入集合list
2.遍历list:
1)首先遇到A,访问输出A并标记A已访问,寻找A的第一个邻接结点B的下标,发现B没有被访问过,递归回到1)访问输出B并标记B已访问,寻找B的第一个邻接结点A的下标,发现A已被访问过,寻找B的下一个邻接结点C的下标,发现C没有被访问过,递归回到1)访问输出C并标记C已访问,寻找C的第一个邻接结点A的下标,发现A已被访问过,寻找C的第二个邻接结点B的下标,发现B已被访问过,接着寻找会发现没有找到,退出递归。
2)遇到B,发现B已被访问过,不用从B开始遍历。
3)遇到C,发现C已被访问过,不用从C开始遍历。
4)遇到D,发现D还没被访问过,从D开始遍历,访问输出D并标记D已访问,寻找D第一个邻接结点B的下标,发现B已被访问过,接着寻找D的下一个邻接结点的下标,会发现没有找到,退出递归。
5)遇到E,发现E还没被访问过,从E开始遍历,访问输出E并标记E已访问,寻找E的第一个邻接结点B的下标,发现B已被访问过,接着寻找E的下一个邻接结点的下标,会发现没有找到,退出递归。
6)遍历结束,访问输出结果是:A,B,C,D,E

bfs
1.先把结点A,B,C,D,E依次存入集合list
2.遍历list:
1)首先遇到A,访问输出A并标记A已访问及将A加入队尾,(1)此时队列非空,将队首元素A弹出,寻到A的第一个邻接结点B的下标,发现B没有被访问过,访问输出B并标记已访问及将B加入队尾,接着寻找A的第二个邻接结点C的下标,发现C没有被访问过,访问输出C并标记已访问及将C加入队尾,再接着寻找A的下一个邻接结点的下标,发现没有找到,退出循环。(2)此时队列非空,弹出队首元素B,重复(1)
(3)此时队列非空,弹出队首元素C,重复(1)
(4)此时队列非空,弹出队首元素D,重复(1)
(5)此时队列非空,弹出队首元素E,重复(1)
2)遇到B,发现B已被访问过,不用从B开始遍历。
3)遇到C,发现C已被访问过,不用从C开始遍历。
4)遇到D,发现D已被访问过,不用从D开始遍历。
5)遇到E,发现E已被访问过,不用从E开始遍历。
6)遍历结束 访问输出结果是:A,B,C,D,E

十、程序员常用10种算法

10.1二分查找算法(非递归)

10.2分治算法

10.3动态规划算法

10.4KMP算法

10.5贪心算法

10.6普里姆算法

10.7克鲁斯卡尔算法

10.8迪杰斯特拉算法

10.9弗洛伊德算法

10.10马踏棋盘算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值