常见算法与数据结构
暴力:
二分: 前提,有序 , 时间复杂度O(lgn) ----> 转换成数据结构: 二叉树(二叉查找树,二叉搜索, 二叉有序树)
哈希: 最高效 , O(1), hash冲突 , jdk1.8 hashmap中的数据结构: 链表+红黑树(处理hash冲突的)
插值
索引: 搜索引擎 ,Lucene
bfs&dfs : 图论里面的遍历
平衡树AVL
B+树
B-Tree
二叉搜索树: 树的深度就是时间复杂度
红黑树 : 高效的查找结构, 底层也是一颗特殊的二叉查找树
性质:
1. 每个节点不是红色就是黑色
2. 不可能有连在一起的红色
3. 根节点就黑色(入度为0的节点)
4. 每个红色节点的两个子节点都是黑色. 叶子节点都是黑色(出度为0)
规则: 所有插入的节点默认就是红色
变色: 当前节点(插入节点)的叔,父节点都是红色
(1) 把叔父节点为黑色
(2) 祖变红
(3) 原当前节点的祖节点成为新的当前节点
左旋: 若当前节点父红叔黑,且当前节点是右子树时,左旋, 以父结节为支点左旋
右旋: 若当前节点父红叔黑,且当前节点是左子树时,右旋
(1) 把父节点变为黑色
(2) 把祖父节点变为红色
(3) 以祖父节点旋转
左旋右旋规律总结(以当前节点为基准): 父干爷死,兄弟靠爷,左旋右靠,右旋左靠
请看示例
10 20 30 5 15 3 8 再插入6
图2中, 0006与0008都是红色与性质2矛盾,所以必然会变色
图3中0005与0010都是红色,与性质2矛盾,且0005节点父红叔黑,且处于0010的左子树上,所以右旋
以上就是红黑树一个右旋示例
分析工具: https://www.cs.usfca.edu/~galles/visualization/RedBlack.html
补充:
修订版1:
还是举例子说明, 依次添加数据,然后分析每一次旋转变色后的逻辑
插入50,60,70
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)