经典查找算法一般应用符号表来实现对数据的快速查找
其底层实现包括三种静态数据类型 :二叉查找树 ,红黑树 , 散列表
需要实现的基本API有
- 创建表
- 插入键值对
- 获取key对应值
- 删除key
- 查询key是否存在对应值
- 表是否为空
- 表键值对数量
- 所有键的集合
二叉查找树:以二叉树方式排列数据并使用二分法查找
特点:对数级别的成本,与快排相似。但是最坏情况下的情况性能差
红黑树:2-3树的具体实现,用平衡插入算法解决了二叉树的自动调整问题,在最坏情况下仍然有较好的性能
特点:红连接均为左连接
没有结点同时与两条红色链接相连
任意空链接到根节点路径上的黑色连接数量相同
散列表(哈希表):散列函数将键转换为索引,应用拉链法(一个散列值对应多个时插入链表)或开放地址(留出空间便于键值对插入)处理碰撞
特点:相对于二叉树,代码更简单,查找时间更优(常数级)
但是抽象结构更复杂