![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 93
应钟二十六
山高路远 未来见
展开
-
海量数据处理问题之位图和布隆过滤器
海量数据处理从哈希函数出发,谈一谈如何处理海量数据的这类面试题有40亿个(数据规模足够大,内存大小限制放不下)不重复的无符号整数(>=0)设计,一种算法 or 数据结构满足以下需求。40亿个数据基本固定经常进行判断一个数字n在不在集合中如果不是海量 常规解决思路就是查找搜索遍历查找排序后二分查找放入Set中 (快 但是空间使用要维护下一个 存放数据结构)自己实现一种直接地址法的哈希表 (要求就是数据比较连续)可以解决冲突问题,但是缺点很明显。哈希数组的长度是和数字的最大值有关原创 2021-07-28 17:36:16 · 220 阅读 · 0 评论 -
让人头大的HashMap、HashTable、ConcurrentHashMap该到此为止了!
Map涉及的集合框架体系图什么是 MapMap:双列数据,存储key-value对的数据 —类似于高中的函数:y = f(x)存储结构的理解:Map中的key:无序的、不可重复的,使用Set存储所的key key所在的类要重写equals()和hashCode() (以HashMap为例)Map中的value:无序的、可重复的,使用Collection存储所有的value —>value所在的类要重写equals()一个键值对:key-value构成了一个Entry对象。Map中原创 2021-03-25 20:19:07 · 128 阅读 · 2 评论 -
多叉平衡搜索树- B-树 、B+树入门必看
目录多叉平衡搜索树二叉平衡搜索树 和 多叉平衡搜索树B-树的数据结构结点构造查找插入特点总结B+树结点信息插入特点比较B+ 树在数据库中的索引多叉平衡搜索树多叉平衡搜索树:包括B树,B+树 ,B*树也就是说一个结点可以有多个孩子二叉平衡搜索树 和 多叉平衡搜索树有了二叉搜索树的情况下,为什么还要研究多叉平衡搜索树的问题?二叉树的查找过程是看作从根节点走叶子的每一天路径,相比较而言,树的高度越低,意味着,访问结点的次数更少。(每向下走一层,需要读取一次结点)多叉搜索树的特点,在访问磁盘数据(其原创 2021-07-04 13:13:37 · 640 阅读 · 3 评论 -
二叉平衡搜索树-学一点红黑树!
上一篇介绍了二叉平衡搜索树- AVL树,今天学习红黑树但是总体来说,两者的区别不太大,相对来讲,红黑树的实现比较简单,理论上来讲,AVL的查找略快一点,插入和删除略慢红黑树特征二叉“平衡” 的体现就是最长边的长度不会超过最短边的两倍,是一种弱平衡。搜索树具体细节研究:二叉树中结点都有颜色,红 or 黑 (只是为了做一个标记)根一定是黑色的叶子一定是黑色的 (注意区分这里的叶子) (也就是路径上 一头一为得是黑色的 )红色结点不能和红色结点相邻 (红 - 黑 -原创 2021-07-01 18:42:45 · 98 阅读 · 0 评论 -
平衡搜索树-AVL树你被问到了吗?
AVL 二叉平衡搜索树基本概念二叉树每个结点只有两个孩子孩子之间有区别 一般为左孩子和右孩子二叉搜索树任取二叉树的结点N,满足 K(N的左子树) < K(N) < K(N的右子树) (也就是左子树的值 < 根节点的值 < 右子树的值)平衡树任取树的结点 N,要求左子树的高度和右子树的高度之间的差的绝对值,不能超过1H(N.left) - H(N.right) <= 1AVL树 (满足上面三种)二叉树搜索树平衡树AV原创 2021-07-01 11:50:12 · 130 阅读 · 3 评论 -
哈希表懂了吗重写hashcode 和 重写equals懂了吗
目录哈希表哈希冲突解决hash冲突闭散列开散列再哈希法建立公共溢出区如何减少冲突通过降低负载因子而减少冲突良好的设计hash函数数组大小尽量用素数(),但java中没有怎么用这个。性能分析哈希表的java实现总结哈希表和java类的关系关于重写hashcode 和 重写equals哈希表其它结构:顺序结构以及平衡树中,元素的值与其存储位置之间没有对应的关系因此在查找一个元素时,必须要经过多次比较。顺序查找时间复杂度为O(N),平衡树中为树的高度,即O(log 2 n ),搜索的效率取决于搜索过程中 元原创 2021-02-21 19:22:28 · 316 阅读 · 0 评论 -
二叉搜索树,带你实现基本的查找、插入和删除操作
二叉搜索树搜索 :纯key模型(set)以及key-value 模型(Map)两种模型的算法没有本质区别二叉搜索树的特点二叉树每个结点中保存关键字(key)关键字具备比较能力每个结点遵守,左子树的所有key < 结点的key 右子树的所有key > 结点的key所以二叉搜索树中不会出现相等的key,二叉搜索树可不一定是完全二叉树二叉搜索树的的插入顺序会影响二叉树的形态查找 public boolean search(Integer e) {原创 2021-02-19 17:07:42 · 392 阅读 · 0 评论 -
一篇文章带你搞懂七大排序
七大排序数据结构中的重中之重啊,友友们!必学必会必掌握。来自可爱老师的句句忠告别记忆代码了好吗? 算法重要的是思想啊冒泡排序思想简述它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。图形描述算法思路整理根据上图我们不难发现,如果要原创 2021-02-18 17:11:12 · 369 阅读 · 2 评论 -
堆和优先级队列
目录存储方式下标关系操作-向下调整(示例:建立一个小堆)操作-向上调整(示例:建立大堆)建堆(小堆)优先队列(示例建小堆)时间复杂度入队列出队列堆的应用1.TopK问题2. 堆排序3. 自定义类堆的构建JDK的优先队列存储方式在一个集合的数据中,找出最大值或者最小值逻辑上完全二叉树实际上是可以通过数组保存的满足任意结点的值都大于其子树中结点的值,叫做大堆,或者大根堆,或者最大堆 ,反之就是小堆使用数组保存二叉树结构,方式即将二叉树用层序遍历方式放入数组中,一般只适合表示完全二叉树,因为非原创 2021-02-15 21:39:20 · 155 阅读 · 0 评论