算法4
1.排序
选择排序:
每次获取最大的数,交换位置
插入排序:
把数字插入有序数组中
希尔排序:
有间隔并且间隔递减的
归并排序:
归并:
两个有序数组的合并成新的有序数组
自顶向下的归并排序:
递归向下合并数组
子底向上的归并排序:
循环向上合并数组
快速排序:
x元素切分数组成两个数组(小于等于x,大于x)
三向快速排序:
x元素切分数组成三个数组(小于x,等于x,大于x)
ext:
优先队列:
最小/大堆:
平衡的,可以用数组表示(获取位置有一定的数学关系),有一定的顺序
通过上浮添加新的元素,下沉删除最大/小的元素
2.查找
顺序查找(无序):
一个一个的查
二分查找(有序):
每次去掉一半的数据
二叉树查找:
构建判断往里面添加数据和查找类似(非平衡),删除替换右子树最小的数据
平衡树:
2-3查找树:构建麻烦,添加向上扩展,删除比较简单
红黑树:旋转,变色实现平衡,情况比较多,麻烦
散列表:
基于拉链法的散列表:
和hashmap类似
基于线程探测法的散列表:
一个数组,插入位置有数据就往后放,删除需要探测最后一个hash的数据填充删除位置,数据量要快满的话效率极低
3.图
无向图:
深度优先搜索
1.走迷宫 计算可达
2.寻找路径 保存路径信息
3.判断环
4.判断二分图
广度优先搜索
1.查询最短的路径
2.查询联通分量