摘要: 前言 哈希表是一种存放键-值对的数据结构,其中值用来存放我们真正需要的数据,键的主要目的就是为了找到值。哈希表理想情况下,只需要一次hash计算即可找到值数据,但通常情况下我们不需要耗费巨大的额外空间来追求这丝毫的查找速度(要追求低hash冲突率,必然要扩大hash表),我们更希望的是让空间和时间达 阅读全文
posted @ 2017-07-27 23:24 holoyong 阅读(609) 评论(0) 推荐(0) 编辑
摘要: 前言 红黑树是工程中最常用到的一种自平衡二叉排序树,其和AVL树类似,都是在进行插入、删除时通过一定的调整操作来维持相对稳定的树高,从而获得较好的查询性能。 性质 1. 节点是红色或黑色。 2. 根节点是黑色。 3 每个叶节点(null节点)是黑色的。 4 每个红色节点的两个子节点都是黑色。(从每个 阅读全文
posted @ 2017-07-27 22:33 holoyong 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 定义 红黑树的物理结构是一棵二叉排序树,逻辑结构是一棵2-3树。在红黑树中,2-3树的3-node中的两个key被使用一条分支来连接,即这两个key在物理上成了独立的两个节点。 红黑树是一种具有红色和黑色链接的平衡查找树,同时满足: 红色节点向左倾斜 一个节点不可能有两个红色链接 整个书完全黑色平衡 阅读全文
posted @ 2017-07-27 21:05 holoyong 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 前言 二叉排序树有简单的实现,多数情况下可以得到满意的查找效率,但毕竟存在顺序查找的隐患。这种隐患来源于对于每次新插入的节点,没有一种调节机制使这个新节点不至于成为隐患的导火索。也就是说,我们需要一种机制,在每次新插入节点后都要检测树是不是“歪了”。 定义 2-3树是平衡的3路查找树,其中2(2-n 阅读全文
posted @ 2017-07-27 17:20 holoyong 阅读(4507) 评论(2) 推荐(0) 编辑
摘要: 前言 查找和排序是算法中最基础的两类算法,其或多或少会被应用在其他高阶算法中。每一种算法都可以有多种数据结构作为支撑,比如查找,可以是对于无序顺序表的查找,查找时只能顺序遍历了;可以是有序顺序表的查找,可以进行二分查找;还可以是即将要介绍的二叉排序树的查找,其查找逻辑类似于二分查找,在插入元素时又不 阅读全文
posted @ 2017-07-27 15:19 holoyong 阅读(360) 评论(0) 推荐(0) 编辑