数据结构和算法
文章平均质量分 69
通过直观的图解方式深入理解数据结构和算法,能够清晰地展示数据结构(如链表、树、图等)的内在逻辑和算法(如排序、搜索、递归等)的执行流程,帮助学习者更好地掌握其核心概念和应用方法。
学会了没
javaer, 偶尔写一些go和js,欢迎各路大佬留言一起探讨
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
图解算法:堆、堆排序、优先队列
堆、堆排序、优先队列可以看成就是一个东西;堆是一种非常重要的数据结构,堆排序是基于堆这种数据结构实现的;优先队列可以用堆这种数据结构来实现,也可以用其他数据结构实现。优先队列可以用来实现有优先级的任务调用(一些任务在池子里等待,优先级最高的先被优先取出执行)原创 2024-12-12 08:34:49 · 1332 阅读 · 0 评论
-
图解算法:递归、斐波那契数列、方法调用栈
斐波那契数列中的第一个数和第二个数都是1, 从第三个数开始,每个数都是前两个数的和。用数学公式表示就是:当n=1,2时: F(1)=1 F(2)=1当n>=3时:F(n)=F(n−1)+F(n−2)原创 2024-12-16 16:18:29 · 482 阅读 · 0 评论 -
图解算法:二叉搜索树(Binary Search Tree,简称BST)
若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值。若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值。它的左、右子树也分别为二叉搜索树。没有键值相等的节点(所有节点的值不重复)他可以是不平衡的原创 2024-12-12 20:23:24 · 617 阅读 · 0 评论 -
图解算法:跳表(Skip List)
1.跳表由多个层次的链表组成,每一层都是一个有序的链表。2.最底层的链表包含所有元素。3.如果一个元素出现在Level i的链表中,则它在Level i之下的链表也都会出现。4.每个节点包含两个指针,一个指向同一链表中的下一个元素,一个指向下面一层的元素。5.跳表的层次是随机函数产生的(抛硬币),数据越多层级多,但实际代码中会限制一个最大层级。6.查找元素过程就是从顶层开始,指针不停地右移和下移。7.跳表本质就是为了性能空间换时间。原创 2024-12-12 10:13:19 · 948 阅读 · 0 评论 -
java算法源码解读-二分查找-Collections.indexedBinarySearch
>> 无符号右移,相当于除以2 , 除不尽向下取整, 比如 0,1,2,3,4,5,6,7 第一次二分mid是3,所以当有偶数个元素时,mid不是正中间位置。1.jdk 里面封装的类库众多,因为是通用类库,代码作者考虑的点非常全面,方法参数和细节逻辑众多,学习曲线大,能够熟练使用就很难,弄清楚源代码原理更是难上加难。2.因为用不到,加上学起来比较难,最后导致的结果就是很多工作很多年的java程序员都只用jdbc做增删查改。偶尔学一下jdk 源码,哪怕只是一个方法,都能受益匪浅的。原创 2024-12-08 11:08:27 · 420 阅读 · 0 评论 -
java版B+树源码解析&关键步骤分解
下面的演示图中用绿色表示叶子节点,灰色为非叶子节点, 一个小方块表示一个节点的里面的一个key。步骤2: 插入1,2 到root节点(也是叶子节点) , root 节点有3个key。触发分裂操作,分裂出一个灰色分支节点, 节点2变成root节点。B+Tree由根节点、分支节点(非叶子节点)和叶子节点组成。继续插入4,5 , 插入5后右子树达到分裂条件,再次分裂。步骤1:插入0 ,叶子节点, 也是root节点。插入3, 节点key的个数变成4,达到分裂条件。依次插入6,7 则分裂出6 ,分裂逻辑如上。原创 2024-12-08 18:00:25 · 387 阅读 · 0 评论
分享