算法与数据结构
文章平均质量分 80
上传基于CS61B的数据结构代码,并且附带个人感悟
poison_Program
啥都搞不懂的程序猿
展开
-
红黑树基于Java代码的剖析
红黑树通过维护额外的颜色属性和引入旋转操作,确保了树的高度始终保持在 (O(\log n)) 的级别,从而保证了高效的插入、删除和查找操作。通过上述代码剖析,可以清晰地看到红黑树是如何通过颜色调整和旋转来保持平衡的。原创 2024-05-25 00:16:25 · 314 阅读 · 0 评论 -
基于链表实现的Map与二叉搜索树的Map对比
Set;总体而言,ULLMap实现简单,适用于小规模数据集,操作效率在键值对数量较少时表现尚可。然而,随着数据规模增大,其操作性能会显著下降。而BSTMap尽管实现复杂,但在大规模数据集下操作效率更高,尤其在平衡树情况下,其查找、插入和删除操作的性能明显优于ULLMap。因此,在需要处理较大数据集或对操作效率要求较高的情况下,BSTMap是更合适的选择。原创 2024-05-22 00:05:28 · 1285 阅读 · 0 评论 -
二分查找介绍
二分查找是一种在排序数组中查找目标值位置的搜索算法。它通过反复将搜索区间一分为二来实现,直到找到目标值或搜索区间为空。二分查找利用数组已排序的特性,将时间复杂度降低到 O(log N)。原创 2024-05-20 00:20:05 · 511 阅读 · 0 评论 -
CS61B:并查集
并查集(Union-Find)是一种数据结构,用于处理不相交集合(Disjoint Sets)的合并和查询操作。它非常适合解决动态连通性问题,例如在图论中判断两个节点是否属于同一个连通分量。并查集的主要操作有两个:查找(Find)和合并(Union)。并查集通常使用一个数组来实现,数组中的每个元素表示一个节点,值表示该节点的父节点。如果某个元素是根节点,则其值为负数,表示集合的大小(按大小合并)或秩(按秩合并)。并查集以其高效的操作和易于实现的特性,成为解决连通性问题的常用工具。原创 2024-05-19 00:00:25 · 408 阅读 · 0 评论 -
多年后,再探算法和数据结构
多年来,通过深入学习和实践各种编程语言,我对数据结构和算法在程序设计中的中心地位有了新的认识。本次从汇编语言到高级编程语言的探讨,展示了无论技术如何进步,构成程序的核心—算法和数据结构—始终保持其基础和不变的角色。原创 2024-05-09 00:11:26 · 439 阅读 · 1 评论 -
CS61B:循环队列
扩容成本: 扩容操作涉及到内存的重新分配及数据的复制,特别是当队列大小达到数组容量时,每次添加元素都可能触发扩容,这可能导致较大的性能开销。固定容量: 初始需要定义数组的大小,虽然可以动态扩容,但这是通过创建新数组并复制旧数组元素来实现的,耗费时间和空间。复杂度: 在链表的头部和尾部添加或删除元素都是常数时间的操作(O(1)),因为不需要移动其他元素。缓存不友好: 链表的节点可能在内存中不连续,导致缓存命中率降低,可能影响性能。可能的空间浪费: 如果队列的使用量远小于数组的实际分配大小,会造成空间浪费。原创 2024-04-27 22:31:22 · 1234 阅读 · 3 评论 -
CS61B:线性表
【代码】CS61B:线性表。原创 2024-04-25 20:04:20 · 464 阅读 · 0 评论