常用数据结构和算法总结

线性表:

  单链表

  双向链表

  循环链表

队列

递归

字符串

数组

  二叉树

  哈夫曼树:又称为最优树,是一种带权路径长度最短的树

  平很二叉树

  B树

  B-树

  B+树:Mysql默认采用的就是B+树进行存储的。

  红黑树:像HashMap和TreeMap底层都用到了红黑树。

图:

  邻接矩阵

  邻接表

  十字链表

  邻接多重表

  深度优先搜索

  广度优先搜索

  最小生成树

  最短路径  

  拓扑排序

  关键路径

散列表:

  主要的一个应用就是hash函数,在很多的应用场景中都有遇到,比如:

  负载均衡;

  HashMap;

  Redis中的hash数据结构;

  很多中间件进行分片存储时也会用到hash算法,比如消息中间件、搜索引擎;

  微服务中的熔断降级策略也会有一致性hash的策略。

查找:

  顺序查找

  折半查找

  分块查找

排序:

  插入排序:

    直接插入排序

    折半插入排序

    希尔排序:

    1.  希尔排序实质上是采用了分组插入的方法,先将整个待排序记录序列分割成几组,从而减少参与直接插入排序的数据量,对每组直接进行插入排序然后增加每组的数据量,重新分组。这样当经过几次分组排序后,整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。

  交换排序:

    冒泡排序

    快速排序

选择排序

  简单选择排序

  堆排序:在java中典型的就是用的是PriorityQueue

归并排序:利用了分支法的思想。先将数组拆分成一个个小块,保证这个小块内部有序,然后步长逐渐增加,保证数组整体有序。

基数排序:有点类似桶排序,利用数据的特点,取出数据的一小部分,比如前缀,先将整体划分到一个桶中,然后再对桶中的后面部分采用桶排序,保证整体有序。

 

算法:

递归

排列组合

分治法

动态规划

穷举法

备忘录

深度优先

广度优先

贪心算法

滑动窗口

双指针

基因算法

模拟

 推荐一个关于算法模拟的网站:

www.cs.usfca.edu/~galles/visualization/Algorithms.html

  

  

 

posted @ 2023-03-05 14:57  君莫笑我十年游  阅读(52)  评论(0编辑  收藏  举报