常用数据结构和算法总结
线性表:
单链表
双向链表
循环链表
栈
队列
递归
字符串
数组
树
二叉树
哈夫曼树:又称为最优树,是一种带权路径长度最短的树
平很二叉树
B树
B-树
B+树:Mysql默认采用的就是B+树进行存储的。
红黑树:像HashMap和TreeMap底层都用到了红黑树。
图:
邻接矩阵
邻接表
十字链表
邻接多重表
深度优先搜索
广度优先搜索
最小生成树
最短路径
拓扑排序
关键路径
散列表:
主要的一个应用就是hash函数,在很多的应用场景中都有遇到,比如:
负载均衡;
HashMap;
Redis中的hash数据结构;
很多中间件进行分片存储时也会用到hash算法,比如消息中间件、搜索引擎;
微服务中的熔断降级策略也会有一致性hash的策略。
查找:
顺序查找
折半查找
分块查找
排序:
插入排序:
直接插入排序
折半插入排序
希尔排序:
- 希尔排序实质上是采用了分组插入的方法,先将整个待排序记录序列分割成几组,从而减少参与直接插入排序的数据量,对每组直接进行插入排序然后增加每组的数据量,重新分组。这样当经过几次分组排序后,整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。
交换排序:
冒泡排序
快速排序
选择排序
简单选择排序
堆排序:在java中典型的就是用的是PriorityQueue
归并排序:利用了分支法的思想。先将数组拆分成一个个小块,保证这个小块内部有序,然后步长逐渐增加,保证数组整体有序。
基数排序:有点类似桶排序,利用数据的特点,取出数据的一小部分,比如前缀,先将整体划分到一个桶中,然后再对桶中的后面部分采用桶排序,保证整体有序。
算法:
递归
排列组合
分治法
动态规划
穷举法
备忘录
深度优先
广度优先
贪心算法
滑动窗口
双指针
基因算法
模拟
推荐一个关于算法模拟的网站:
www.cs.usfca.edu/~galles/visualization/Algorithms.html
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
2021-03-05 Dubbo & Zookeeper
2020-03-05 Spring Data JPA 与 MyBatis对比
2020-03-05 markdown下载、安装、破解、汉化与常用语法