摘要:
哈希表(Hash Table) 数组加链表实现的一种数据结构(JDK 的 HashMap 会优化红黑树) 桶大小 数组长度怎么确定?根据需要可以自行设置,但是要设置为 2 的指数 添加元素是会先通过哈希算法算出下标,然后根据下标放入到数组中 当算出的下标如果越界了,需要均匀的分布在数组中,怎么保证呢 阅读全文
posted @ 2025-04-26 17:39
CyrusHuang
阅读(105)
评论(0)
推荐(0)
摘要:
B+Tree B+Tree 是 B-Tree 的变种,所以 B+Tree 有很多 B-Tree 的特性。这里只说两者区别和 B+Tree 优势的地方 特性 B-Tree B+Tree 非叶子节点存储内容 键(Key) + 子节点指针 同左 叶子节点存储内容 键(Key) + 数据 同左 叶子节点连接 阅读全文
posted @ 2025-04-26 17:38
CyrusHuang
阅读(14)
评论(0)
推荐(0)
摘要:
B-Tree B-Tree 引出 B-Tree 是用于访问磁盘文件的数据结构,没错,学习 B-Tree 就是为了深入了解数据库的 1,AVL树 和 红黑树效率已经非常高了,难道不适合访问磁盘数据吗? 是的,因为 B-Tree 是 多叉树,二叉树一个节点最多两个子节点,B-Tree 一个节点多个节点, 阅读全文
posted @ 2025-04-26 17:38
CyrusHuang
阅读(26)
评论(0)
推荐(0)
摘要:
AVL树 VS 红黑树 阅读全文
posted @ 2025-04-26 17:38
CyrusHuang
阅读(17)
评论(0)
推荐(0)
摘要:
红黑树 AVL 树是平衡的二叉搜索树,在插入和删除元素时通过旋转保持树的平衡 红黑是也是平衡的二叉搜索树,和 AVL 树的只要区别是判断失衡的标准不一样 AVL 是根据左右子树的高度差来判断是否失衡,旋转后是严格平衡的 红黑树是根据自己的方式来判断是否失衡,也会旋转,但是旋转次数要少些 核心特性 所 阅读全文
posted @ 2025-04-26 17:37
CyrusHuang
阅读(35)
评论(0)
推荐(0)
摘要:
AVL树 AVL树概念 AVL树是最早发明的自平衡二叉搜索树,由Adelson-Velsky和Landis在1962年提出。它在普通二叉搜索树的基础上增加了平衡条件,确保树的高度始终保持在O(log n)级别。 为什么会有 AVL 树?因为二叉搜索树极端情况下可能退化为链表,AVL 树就是使用保持树 阅读全文
posted @ 2025-04-26 17:37
CyrusHuang
阅读(151)
评论(0)
推荐(0)
摘要:
Heap VS BST 特性 堆 (Heap) 普通二叉搜索树 (BST) 基本结构 完全二叉树 任意形状的二叉树 排序性质 只保证父节点与子节点关系 保证左<父<右的有序性 平衡性 天然完全平衡 可能退化为链表(不平衡) 存储方式 通常用数组实现 通常用节点和指针实现 插入时间复杂度 O(log 阅读全文
posted @ 2025-04-26 17:37
CyrusHuang
阅读(43)
评论(0)
推荐(0)
摘要:
堆(Heap)数据结构 堆是一种特殊的完全二叉树,它满足堆属性(Heap Property),在计算机科学中有广泛应用,特别是优先队列、堆排序等场景。 核心特性 完全二叉树结构:1 除最后一层外,其他节点完全填满;2 最后一层节点从左到右连续排列 堆属性: 小顶堆:每个节点的值都小于或等于其子节点的 阅读全文
posted @ 2025-04-26 17:36
CyrusHuang
阅读(56)
评论(0)
推荐(0)
摘要:
二叉树(Binary Tree) 图片来于 hello 算法 什么是二叉树? 线性数据结构下一个元素是一个,树的下一个节点是多个,二叉树的下一个节点最多两个,逻辑存储上是非线性的 存储结构可以是线性(简单的树)也可以是非线性(复杂的树) 常见术语 根节点(root node):顶层节点,没有父节点。 阅读全文
posted @ 2025-04-26 17:36
CyrusHuang
阅读(71)
评论(0)
推荐(0)
摘要:
队列(Queue)数据结构 队列是一种先进先出(FIFO, First In First Out)的线性数据结构,类似于现实生活中的排队场景,先到的人先获得服务。 核心特性 FIFO原则:最先入队的元素最先出队 受限访问: 只能从队尾(rear)插入元素(入队,enqueue) 只能从队首(fron 阅读全文
posted @ 2025-04-26 17:35
CyrusHuang
阅读(67)
评论(0)
推荐(0)
摘要:
栈(Stack)数据结构 栈是一种后进先出(LIFO, Last In First Out)的线性数据结构 类似于进电梯,先进后出(进电梯后别站在最边上哈,不然就先出了,哈哈~) 或者类似洗完,先洗好的放下面,后洗好的放上面,拿碗的时候要拿后洗好的。 核心特性 LIFO原则:最后入栈的元素最先出栈 阅读全文
posted @ 2025-04-26 17:34
CyrusHuang
阅读(31)
评论(0)
推荐(0)
摘要:
数组(Array)简介 数组是数据结构中最基本、最常用的线性结构之一,它是一种相同数据类型元素的集合,这些元素在内存中连续存储,并通过索引(下标)来访问。 基本特性 固定大小:大多数编程语言中数组在创建时需要指定大小,且创建后大小不可改变(动态数组除外) 连续内存:所有元素在内存中是连续存储的 随机 阅读全文
posted @ 2025-04-26 17:34
CyrusHuang
阅读(169)
评论(0)
推荐(0)
摘要:
链表(Linked List)简介 链表是另一种常见的线性数据结构,与数组不同,链表的元素在内存中不必连续存储,而是通过指针(或引用)将各个元素连接起来。 基本特性 动态大小:链表的大小可以动态增长或缩小 非连续内存:元素可以分散存储在内存中的任何位置 顺序访问:必须从头节点开始逐个访问,不能随机访 阅读全文
posted @ 2025-04-26 17:34
CyrusHuang
阅读(68)
评论(0)
推荐(0)
摘要:
数据结构的分类 按照 逻辑结构:可以分为线性和非线性。下一个元素是一个还是多个 按照 存储结构:也可以分为线性(连续)和非线性(分散)。下一个元素是紧挨着还是没有挨着 逻辑结构 图片来于 hello 算法 存储结构 图片来于 hello 算法 阅读全文
posted @ 2025-04-26 17:33
CyrusHuang
阅读(20)
评论(0)
推荐(0)
摘要:
时间复杂度 以下是常见的时间复杂度,按效率从高到低排序: 时间复杂度 名称 示例 O(1) 常数时间 数组随机访问、哈希表查找 O(log n) 对数时间 二分查找、平衡二叉搜索树(AVL、红黑树) O(n) 线性时间 遍历数组、链表查找 O(n log n) 线性对数时间 快速排序、归并排序、堆排 阅读全文
posted @ 2025-04-26 17:32
CyrusHuang
阅读(57)
评论(0)
推荐(0)
摘要:
1. ThreadLocal 基本概念 ThreadLocal 提供了线程局部变量,这些变量与普通变量不同,每个访问该变量的线程都有自己独立的初始化副本。ThreadLocal 实例通常是类中的 private static 字段,用于将状态(如用户 ID 或事务 ID)与线程关联起来。 线程隔离: 阅读全文
posted @ 2025-04-26 17:13
CyrusHuang
阅读(39)
评论(0)
推荐(0)

浙公网安备 33010602011771号