排序算法
1.插入排序
直接插入排序
希尔排序
2.交换排序
冒泡排序
快速排序
3.选择排序
直接选择排序
树形选择排序
堆排序
4.归并排序
5.基数排序
多关键字排序
链式基数排序
算法需要多练,熟能生巧,可在Leetcode刷题。
查找算法
1.哈希查找
2.静态查找
顺序查找
二分查找
分块查找
3.动态查找
二叉排序树
平衡二叉树
B_树和B+树
红黑树
数据结构
1.线性表
顺序表:数组,如ArrayList;
链表:单链表,如LinkedList;
2.栈
3.队列
4.串
Brute-Force模式匹配算法
KMP模式匹配算法
5.树
二叉树
哈夫慢编码
树的遍历:先序遍历,中序遍历,后序遍历
6.图
邻接矩阵
图的遍历:广度优先搜索和深度优先搜索
最小生成树:克鲁斯卡尔算法和普里姆算法
最短路径:单源最短路径算法(迪杰斯特拉)和费洛伊德算法
拓扑排序
关键路径算法
有些数据结构难以理解是因为不够直观,可以查看Data Structure Visualizations和Algorithm Visualizer,可视化数据结构。
算法思想
1.递归与分治策略
二分搜索
大整数乘法
矩阵乘法
棋盘覆盖
合并排序
快速排序
线性时间选择
2.动态规划
矩阵连乘
最长公共子序列
最大字段求和
0-1背包
最优二叉搜索树
3.贪心算法
哈夫曼编码
单源最短路径算法(迪杰斯特拉)
最小生成树
4.回溯法
n后问题
最大团问题
0-1背包
着色问题
旅行售货员问题
5.分支限界法
最大团问题
0-1背包
6.随机化算法
其他应用算法
1.LRU(最简单的实现方式是使用LinkedHashMap)
2.一致性哈希算法
3.流量控制算法
4.布隆过滤器
5.HyperLogLog
6.GeoHash