上一页 1 ··· 5 6 7 8 9 10 11 12 13 下一页
摘要: 树 节点的定义 树中的元素称之为节点 高度的定义 节点的高度:节点到叶子节点的最长路径 树的高度:跟节点的高度 深度的定义 根节点到这个节点所经历的边的个数 层的定义 节点的深度+1 二叉树 满二叉树 除了叶子结点外每个节点都有左右两个子节点 完全二叉树 叶子结点都在最低下两层,最后一层的叶子节点都 阅读全文
posted @ 2018-11-13 19:19 田错 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 哈希算法的定义和原理 将任意长度的二进制串映射为固定长度的二进制串。 这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制串就是哈希值。 设计一个优秀的哈希算法需要满足: 从哈希值不能反向推导出原始数据(所以哈希算法也叫单向哈希算法); 对输入数据非常敏感,哪怕原始数据只修改了一个 Bit 阅读全文
posted @ 2018-11-13 15:51 田错 阅读(426) 评论(0) 推荐(0) 编辑
摘要: 散列表和链表组合使用 LRU缓存淘汰算法 借助散列表,我们可以把LRU缓存淘汰算法的时间复杂度降为O(1)。 一个缓冲cache系统主要包含以下操作 往缓存中添加一个数据; 从缓存中删除一个数据; 在缓存中查找一个数据。 单纯采用链表,时间复杂度只能是O(n)。 将散列表和双向链表结合,就可以降为O 阅读全文
posted @ 2018-11-13 14:48 田错 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 散列表碰撞攻击 在极端情况下,有些恶意的攻击者,还有可能通过精心构造的数据,使得所有的数据经过散列函数之后,都散列到同一个槽里。 如果我们使用的是基于链表的冲突解决方法,那这个时候,散列表就会退化为链表,查询的时间复杂度就从 O(1) 急剧退化为 O(n)。 如何设计一个可以应对各种异常情况的工业级 阅读全文
posted @ 2018-11-12 22:27 田错 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 散列表 概述 散列表Hash Table来源于数组,它借助散列函数对数组这种数据结构进行扩展,利用的是数组支持按照下标随机访问元素的特性。 需要存储在散列表中的数据我们称为键key,将键转化为数组下标的方法hash(key)称为散列函数,散列函数的计算结果称为散列值。 将数据存储在散列值对应的数组下 阅读全文
posted @ 2018-11-12 21:05 田错 阅读(673) 评论(1) 推荐(0) 编辑
摘要: 跳表的概念 对链表建立n级索引,例如每两个结点提取一个节点到上一层,称之为索引层。 图中的down表示down指针,指向下一级结点 跳表的时间复杂度 跳表的高度 跳表的高度是log2n。 跳表的时间复杂度 跳表中查询某个数据的时间复杂度是O(logn)。 跳表的空间复杂度及优化 跳表的空间复杂度 跳 阅读全文
posted @ 2018-11-12 19:53 田错 阅读(455) 评论(0) 推荐(0) 编辑
摘要: 四种常见的二分查找变形问题 查找第一个值等于给定值的元素 查找最后一个值等于给定值的元素 查找第一个大于等于给定值的元素 查找最后一个小于等于给定值的元素 适用性分析 凡是能用二分查找解决的,绝大部分我们更倾向于用散列表或者二叉查找树, 即便二分查找在内存上更节省,但是毕竟内存如此紧缺的情况并不多。 阅读全文
posted @ 2018-11-12 18:56 田错 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 二分查找概念 二分查找针对的是一个有序的数据集合,每次通过跟区间中间的元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间缩小为0。 时间复杂度 时间复杂度是O(logn)。 二分查找实现 循环实现 注意事项 循环退出条件是:start<=end,而不是start<end。 mi 阅读全文
posted @ 2018-11-11 20:04 田错 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 选择合适的排序算法 回顾 选择排序算法的原则 1)线性排序时间复杂度很低但使用场景特殊,如果要写一个通用排序函数,不能选择线性排序。 2)为了兼顾任意规模数据的排序,一般会首选时间复杂度为O(nlogn)的排序算法来实现排序函数。 3)同为O(nlogn)的快排和归并排序相比,归并排序不是原地排序算 阅读全文
posted @ 2018-11-11 18:26 田错 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 线性排序 线性排序的概念 线性排序算法包括桶排序、计数排序、基数排序。 线性排序算法的时间复杂度为O(n)。 线性排序的特点 此3种排序算法都不涉及元素之间的比较操作,是非基于比较的排序算法。 对排序数据的要求很苛刻,重点掌握此3种排序算法的适用场景。 桶排序 算法原理 1)将要排序的数据分到几个有 阅读全文
posted @ 2018-11-11 17:51 田错 阅读(434) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 下一页