CodeZLei

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

 

posted on 2019-04-01 10:13  CodeZLei  阅读(225)  评论(0编辑  收藏  举报