代码改变世界

B树和B+树

2022-11-25 11:16 by 杭伟, 32 阅读, 0 推荐, 收藏, 编辑
摘要:上一篇讲到了红黑树,想到说树从二叉树演进到红黑树这样近乎“完美”的数据结构,那直接所有大数据类的场景都用红黑树好了? 也不对。比如:如果新增删除少,查询多,那还是平衡二叉搜索树更具优势。因为它更“平衡”查找效率更高(红黑树高度一般比平衡二叉树要高)。 然后我们所讨论的时间复杂度也更多的是指在内存中操 阅读全文

2-3-4树和红黑树

2022-11-24 15:38 by 杭伟, 52 阅读, 0 推荐, 收藏, 编辑
摘要:2-3-4树,一种4阶的B树。红黑树的本质是2-3-4树。 其中: 2节点对应红黑树中的黑色节点(所有的2节点直接染黑), 3节点对应红黑树中的上黑下红(这里颜色一定是上黑下红), 4节点对应红黑树中的中间黑两边红。 裂变状态对应红黑树中:上红下黑新增红(新增一定是红),如果上是根节点再转为黑色。 阅读全文

Java实现平衡二叉搜索树(AVL树)

2022-11-23 19:31 by 杭伟, 76 阅读, 0 推荐, 收藏, 编辑
摘要:上一篇实现了二叉搜索树,本章对二叉搜索树进行改造使之成为平衡二叉搜索树(Balanced Binary Search Tree)。 不平衡的二叉搜索树在极端情况下很容易退变成链表,与新增/删除/查找时间复杂度为O(logN)的目标又远了一步。 平衡二叉搜索树始终围绕O(logN)这个目标来构建数据结 阅读全文

Java实现二叉搜索树

2022-11-22 17:06 by 杭伟, 85 阅读, 0 推荐, 收藏, 编辑
摘要:将链表进行改造,即可构造一棵二叉树。 本文用java实现一颗二叉搜索树,实现二叉树的新增,删除,查找等功能。并测试新增和查找的时间复杂度。 节点类与链表节点相似,将链表的前后节点定义逻辑改为左右(孩子)节点: /** * 二叉搜索树节点 */ public class Node { private 阅读全文

Java双向链表实现队列

2022-11-21 15:46 by 杭伟, 106 阅读, 0 推荐, 收藏, 编辑
摘要:将双向链表做简单的改造,即可实现一个FIFO(First Input First Out)队列, 该队列只在头节点出队,尾节点入队。 一般来说定义节点类只需一个后驱节点next即可。 这里保留pre节点,模拟一个已经入队的节点,如果需要取消,这样pre节点就是一个优势。 定义节点类: /** * 队 阅读全文

Java实现双向循环链表

2022-11-21 09:02 by 杭伟, 172 阅读, 0 推荐, 收藏, 编辑
摘要:上一篇文章实现了单向循环链表,双向很简单,在单向循环链表的基础上加一个前驱指针, 节点类如下: /** * 双向链表节点 */ public class Node { private int data;//数据域 private Node pre;//指向上一个节点 private Node nex 阅读全文

Java实现单向循环链表

2022-11-18 18:05 by 杭伟, 178 阅读, 0 推荐, 收藏, 编辑
摘要:准备节点类,节点类中只有一个int类型的数据域和一个指针: /** * 单链表节点 */ public class Node { private int data;//数据域 private Node next;//指向下一个节点 public int getData() { return data 阅读全文

ArrayList实现原理和自动扩容

2022-11-18 16:34 by 杭伟, 126 阅读, 0 推荐, 收藏, 编辑
摘要:ArrayList在Java集合中的位置, ArrayList原理: transient Object[] elementData; ArrayList通过数组来实现。 默认构造方法会构造一个容量为10的空数组。 自动扩容: 在每次添加新元素(Add方法)时,都会通过grow方法判断当前list的s 阅读全文

阿里云NAS文件迁移项目实践

2021-08-17 22:54 by 杭伟, 1011 阅读, 0 推荐, 收藏, 编辑
摘要:阿里云文件存储NAS是阿里云推出的用于传统文件共享的,使用NFS协议挂载的共享文件夹。 产品背景 下图是NAS和阿里云另一明星产品OSS以及块存储EBS的区别 NAS核心优势:无需修改程序,挂载之后,可以像使用普通操作系统共享文件夹一样使用。即访问NAS和访问本地文件系统操作一致。 需求场景 产品类 阅读全文

使用机器学习技术帮助区分不同车型的图片

2021-01-11 17:53 by 杭伟, 209 阅读, 0 推荐, 收藏, 编辑
摘要:最近了解了机器学习的相关技术,觉得挺有意思的。特别是看到: TensorFlow技术为非洲的粮食增产 https://v.youku.com/v_show/id_XMzU1MDA0ODU1Ng==.html?spm=a2hzp.8253869.0.0 以及帮助古代文学家转译中世纪手稿 https:/ 阅读全文