Java后端开发 - 算法和数据结构

排序算法

1.插入排序

直接插入排序

希尔排序

2.交换排序

冒泡排序

快速排序

3.选择排序

直接选择排序

树形选择排序

堆排序

4.归并排序

5.基数排序

多关键字排序

链式基数排序

算法需要多练,熟能生巧,可在Leetcode刷题。

查找算法

1.哈希查找

2.静态查找

顺序查找

二分查找

分块查找

3.动态查找

二叉排序树

平衡二叉树

B_树和B+树

红黑树

数据结构

1.线性表

顺序表:数组,如ArrayList;

链表:单链表,如LinkedList;

2.栈

3.队列

4.串

Brute-Force模式匹配算法

KMP模式匹配算法

5.树

二叉树

哈夫慢编码

树的遍历:先序遍历,中序遍历,后序遍历

6.图

邻接矩阵

图的遍历:广度优先搜索和深度优先搜索

最小生成树:克鲁斯卡尔算法和普里姆算法

最短路径:单源最短路径算法(迪杰斯特拉)和费洛伊德算法

拓扑排序

关键路径算法

有些数据结构难以理解是因为不够直观,可以查看Data Structure VisualizationsAlgorithm Visualizer,可视化数据结构。

算法思想

1.递归与分治策略

二分搜索

大整数乘法

矩阵乘法

棋盘覆盖

合并排序

快速排序

线性时间选择

2.动态规划

矩阵连乘

最长公共子序列

最大字段求和

0-1背包

最优二叉搜索树

3.贪心算法

哈夫曼编码

单源最短路径算法(迪杰斯特拉)

最小生成树

4.回溯法

n后问题

最大团问题

0-1背包

着色问题

旅行售货员问题

5.分支限界法

最大团问题

0-1背包

6.随机化算法

其他应用算法

1.LRU(最简单的实现方式是使用LinkedHashMap)

2.一致性哈希算法

3.流量控制算法

4.布隆过滤器

5.HyperLogLog

6.GeoHash