选择算法
算法说明
线性查找:从数组第一个元素开始,逐个与目标值比较,直到命中或扫描完毕。
时间复杂度:O(n)(最坏 / 平均),最好 O(1)。适合无序小数据。
时间复杂度:O(n)(最坏 / 平均),最好 O(1)。适合无序小数据。
数据与参数
算法说明
二分查找:在有序数组中反复取中点,根据比较结果把区间折半,直到命中或区间为空。
时间复杂度:O(log n)。前提:数组必须有序。
时间复杂度:O(log n)。前提:数组必须有序。
数据与参数
算法说明
哈希查找:用哈希函数 h(k)=k mod size 把键映射到桶,冲突用链地址法解决(每桶一条链表)。
时间复杂度:平均 O(1),最坏 O(n)(全部冲突)。
时间复杂度:平均 O(1),最坏 O(n)(全部冲突)。
数据与参数
算法说明
二叉搜索树(BST):左子树所有键小于节点、右子树所有键大于节点;查找时沿比较路径下降。
时间复杂度:平均 O(log n),最坏 O(n)(退化为链表)。
时间复杂度:平均 O(log n),最坏 O(n)(退化为链表)。
数据与参数
算法说明
AVL 平衡树:每个节点维护平衡因子 bf=左高-右高;插入后若 |bf|>1,按 LL / RR / LR / RL 旋转恢复平衡。
时间复杂度:插入 / 查找均 O(log n)。
时间复杂度:插入 / 查找均 O(log n)。
数据与参数
算法说明
红黑树:节点带红 / 黑标记,满足「根黑、红子必黑、任意路径黑高相等」;插入后通过变色与旋转修复性质。
时间复杂度:插入 / 查找均 O(log n)。
时间复杂度:插入 / 查找均 O(log n)。
数据与参数
算法说明
B 树:多路平衡搜索树,每个节点可存多个键;节点满(order 个键)时分裂,中间键提升到父节点。
时间复杂度:查找 / 插入均 O(log n)。
时间复杂度:查找 / 插入均 O(log n)。
数据与参数
算法说明
B+ 树:所有数据(键)都保存在叶子节点,内部节点只存路由键;叶子用链表串联便于范围遍历。
时间复杂度:查找 / 插入均 O(log n)。
时间复杂度:查找 / 插入均 O(log n)。
数据与参数
算法说明
跳表:多层有序链表,上层是下层的「快速通道」;插入时抛硬币决定节点层数,查找时从高层逐层向下跳。
时间复杂度:期望 O(log n),最坏 O(n)。
时间复杂度:期望 O(log n),最坏 O(n)。
数据与参数
步骤 0 / 0比较 0
就绪:选择左侧算法标签开始探索。