查找算法
顺序查找
二分查找(前提已经排序) 时间复杂度 LOG2(N)
注意设计成左闭右开--区间无重复思想
排序算法
快速排序 时间复杂度 N*LOG2(N) (题外话:i++先算后增,++i先增后算)二叉树前序遍历(DLR)
应用:数据量大且是线性结构
短板:大量重复数据或单向链式结构处理性能不好(一般不用于链式结构)
归并排序 时间复杂度 N*LOG2(N) 二叉树后序遍历(LRD)
用空间换时间
二叉排序树(查找树,搜索树)(LDR):
性质:
1)所有节点的左子树关键字值都比此节点的关键字值小
2)所有节点的右子树关键字值都比此节点的关键字值大
3)所有节点的左右子树都是二叉树
4)没有重复值(代码实现时可忽略)
二叉排序树删除节点(都要考虑节点是根节点的情况):
1)节点是叶子(直接删除)
2)节点只有左孩子
1--要删除的节点是左孩子(直接用节点的左孩子代替)
2--要删除的节点是右孩子(直接用节点的左孩子代替)
3)节点只有右孩子
1--要删除的节点是左孩子(直接用节点的右孩子代替)
2--要删除的节点是右孩子(直接用节点的右孩子代替)
4)节点左右孩子都有(从右子树找节点最小值补上即该节点的后继节点)
即将该节点的后继节点复制一份到该节点(保留原有节点的父亲和孩子,修改key和value值为后继节点的值),然后再删除原有后继节点(此时原有后继节点肯定没有左孩子 进行 3)1--步骤)