本文概览:
1、常用的算法有:
(1)排序算法
排序: 冒泡、插入、选择、快速排序、合并排序
(2) 查找算法
二分查找
(3 )递归算法,递归通过for循环实现
分而治之
归纳
(4)NP。集合覆盖和旅行上问题。
贪婪算法
(5)动态规划。背包问题。
2、常用的java封装的数据结构
经常使用的有HashMap、Priority、Stack。
(1)数组定义
int[] array = new arry[4];
int[] porder = new int[]{3,9,20,15,7};
数组长度: int len=array.length;
(2)优先级队列
- 默认
1 |
PriorityQueue<Integer> priority = new PriorityQueue<Integer>(); |
- 自定义比较器
1 2 3 4 5 6 7 8 |
PriorityQueue<Integer> pq = new PriorityQueue<>(new Comparator<Integer>() { @Override public int compare(Integer a, Integer b) { return map.get(b) - map.get(a); } }); |
(3) stack
1 |
Stack<TreeNode> stack = new Stack<TreeNode>(); |
(4)字符串比较。通过String.compareTo比较。
(5)通过JDK的Collections.sort和Comparator的定义
(6) HashMap
定义 Map<String,String> dic = new HashMap<String,String>();
查询:containsKey方法
1 排序算法
2 数组与二分查找
3 链表
4 字符串
5 递归
7 并查集
8 树
9 堆(PriorityQueue实现)
10 图数据结构
1、如何表示图数据
2、mysql如何表示
10.1 应用
调度平台任务依赖
10.2 广度优先
广度优先,计算非加权图节点之间的最短路径,即途径最少边数的路径。
通过队列来实现
10.3 狄克斯拉算法
1、狄克斯拉算法。计算加权图中最短路径