数据结构
文章平均质量分 73
数据结构是用于规范组织、高效存储与优化处理数据的基础框架,如今已成为程序员、算法工程师、计算机专业学习者的必备知识,是支撑软件开发、人工智能、大数据处理、操作系统设计等领域高效运行的底层逻辑基础。
洋不写bug
疾风知劲草,路遥知马力
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Map&Set(三)哈希函数、哈希表原理、哈希表代码实现超详细解析
本文详解哈希表的底层原理,通过数组与哈希函数结合实现O(1)时间复杂度的增删查操作。重点解析哈希冲突的解决方式——开散列(链地址法)与负载因子控制,并结合代码模拟实现HashMap。同时介绍Java中HashMap的优化策略:链表转红黑树、动态扩容等机制,确保高效性能。适合数据结构学习者深入理解哈希表核心思想。原创 2026-09-16 09:42:26 · 261 阅读 · 0 评论 -
Map&Set(二),画图详解二叉搜索树的概念和实现代码
本文详解二叉搜索树(BST)的定义、特性及核心操作。二叉搜索树满足左子树所有节点小于根,右子树所有节点大于根,支持高效查找、插入与删除,理想时间复杂度为O(logN),最坏情况退化为O(N)。文中重点解析了删除操作的四种情形:无子节点、仅左子树、仅右子树、双子树,并结合代码实现详细说明。同时介绍了平衡二叉搜索树如AVL树和红黑树的应用背景,为后续进阶学习铺垫基础。原创 2026-09-15 12:12:02 · 37 阅读 · 0 评论 -
Map&Set(一)Map、Set使用,经典算法题目解析
本文介绍了Java中Set与Map的基礎用法。Set具有無序、去重、快速查找特性,常用實現類為HashSet與TreeSet;Map則存儲鍵值對(key-value),支持映射查詢,實現類為HashMap與TreeMap。兩者均基於哈希表或二叉搜索樹,適用於去重、查重、映射等場景,是算法面試高频考點。文中通過代碼示例演示了add、contains、remove、put、get等操作,並強調其無序性與唯一性特徵。原创 2026-09-15 08:51:54 · 139 阅读 · 0 评论 -
排序(二)堆排序|快速排序|归并排序 代码原理,非递归写法超详细解析
本文解析堆排序、快速排序与归并排序三大高效排序算法。堆排序基于大堆/小堆,通过建堆与逐次调整实现O(NlogN)时间复杂度,空间复杂度O(1),但为不稳定排序;快速排序采用分治思想,以Hoare法为例,通过双指针分区实现高效排序,平均时间复杂度O(NlogN),是面试高频算法;归并排序则通过分而治之稳定排序,适合大数据量场景。三者均优于基础排序,广泛应用于标准库中。原创 2026-09-14 12:28:17 · 193 阅读 · 0 评论 -
排序(一)基础排序,插入|希尔|冒泡|直接选择排序详解
本文介绍了四种基础排序算法中的插入排序与希尔排序。插入排序通过维护有序与无序区间,逐个将元素插入到合适位置,时间复杂度为O(N²),空间复杂度O(1),且可实现稳定排序。希尔排序是插入排序的优化,通过分组进行间隔排序(gap逐渐减小),提升效率,尤其在数据基本有序时表现更佳。两者均属内部排序,适合学习排序思维与面试考察。原创 2026-09-10 21:32:03 · 96 阅读 · 0 评论 -
堆的解析,堆和优先级队列的实现,比较规则制定
本文详解堆与优先级队列的原理及实现。堆是特殊的完全二叉树,分为大根堆和小根堆,通过数组存储,利用父子节点下标关系(左子:2parent+1,右子:2parent+2)高效操作。优先级队列基于堆实现,支持快速插入(offer)和删除最小/最大元素(poll)。核心操作为“向下调整”,从最后一个非叶子结点开始,自后向前调整,确保堆性质。代码实现中,shiftDown方法通过循环比较并交换子节点,最终构建出完整堆结构,时间复杂度为O(n),适用于高效排序与任务调度等场景。原创 2026-09-10 21:31:11 · 389 阅读 · 0 评论 -
二叉树(四)经典算法题目解析,公共祖先,二叉树构造,非递归遍历
本文解析二叉树7道经典算法题,重点剖析“最近公共祖先”与“根据先序、中序构造二叉树”。前者通过递归判断结点在左右子树的分布,结合返回值逻辑修正错误,实现高效求解;后者利用前序确定根节点,中序划分左右子树,配合双指针控制区间范围,递归构建完整二叉树。题目难度较高,需深入理解递归思想与边界处理,适合进阶练习,提升二叉树综合解题能力。原创 2026-09-09 21:06:31 · 413 阅读 · 0 评论 -
二叉树(三)经典算法题目解析,子树判断,平衡、对称、翻转、遍历二叉树
本文解析了7道经典二叉树算法题,涵盖相同树、子树判断、翻转二叉树及平衡二叉树等核心问题。通过递归思想实现,强调画递归调用图辅助理解。代码均以Java编写,注重逻辑清晰与边界处理,适合初学者掌握二叉树递归解题技巧。原创 2026-09-08 17:37:20 · 236 阅读 · 0 评论 -
二叉树(二) 常见基础操作解析|结点数、树高、查找结点、判断完全二叉树
本文详解二叉树基础操作的递归实现,涵盖结点个数统计、第k层结点数计算、树高求解及结点查找等核心功能。重点剖析了递归思路与常见错误(如局部变量重置问题),推荐使用返回值累加的方式避免状态污染,确保多次调用正确性。代码基于Java,结构清晰,适合数据结构初学者掌握递归思想与二叉树遍历技巧。原创 2026-09-08 17:36:32 · 422 阅读 · 0 评论 -
二叉树(一)树结构基础,先序、中序、后序遍历代码,规律详细解析,看完包懂!
本文系统讲解树结构与二叉树基础,涵盖树的定义、性质(如度、深度、叶子结点等)、表示方法(孩子表示法为主)及二叉树类型(满二叉树、完全二叉树)。重点解析二叉树的三种遍历方式:先序、中序、后序,均基于递归实现,结合代码示例清晰展示遍历逻辑,适合数据结构初学者掌握面试高频考点。原创 2026-09-07 21:19:00 · 406 阅读 · 0 评论 -
队列的使用,基于数组和基于链表的模拟实现,题目练习
本文介绍了队列的基本概念、特点(先进先出)及两种底层实现方式:链表和数组。通过Java代码模拟实现自定义队列,分别使用链表实现尾插头删的入队与出队操作,并基于数组的ArrayDeque讲解高效队列应用。结合算法题练习,帮助读者掌握队列的核心操作(offer/poll/peek)与实际应用场景,适合数据结构初学者系统学习。原创 2026-09-07 21:18:29 · 254 阅读 · 0 评论 -
栈的使用、模拟实现、相关经典算法题详细解析
本文详解栈的数据结构及其在Java中的应用,介绍栈的三大核心操作(入栈、出栈、取栈顶),并通过标准库Stack类演示使用方法及异常处理。文章还通过模拟实现自定义栈,展示数组扩容、入栈出栈逻辑,并结合典型算法题分析出栈序列的合理性,帮助读者深入理解栈的特性与应用场景。原创 2026-09-06 10:21:53 · 284 阅读 · 0 评论 -
链表面试笔试经典题目详细解析,题目多解法,复杂度分析
本文详细解析链表常见面试题:移除指定元素、反转链表及找中间节点。通过画图分析,强调边界情况处理与指针操作细节。移除元素时使用双指针避免遗漏;反转链表注意保存下一节点防止断链;找中间节点采用快慢指针法,高效且易理解。代码均以Java实现,附完整题解与思路剖析,适合数据结构学习者巩固基础。原创 2026-09-06 10:21:34 · 215 阅读 · 0 评论 -
链表补充练习,双链表的模拟实现
本文介绍了双链表的原理与Java模拟实现,对比单链表增加了prev指针,支持双向遍历,提升了操作灵活性。通过自定义Node节点类和MyDLinkedList类,实现了头插、尾插、中间插入、删除、查找等核心方法,并结合toString和size方法完成测试验证。文章强调双链表空间开销较大,但逻辑更清晰,适合初学者在掌握单链表基础上进阶练习,代码结构清晰,便于理解与扩展。原创 2026-09-04 20:26:37 · 235 阅读 · 0 评论 -
链表超详细解析,特点介绍,方法使用,底层模拟实现
本文介绍了链表相较于顺序表的优势:空间利用率高、插入效率高。链表通过节点间的引用(next)实现离散存储,支持单向/双向、带头/不带头、循环/非循环等多种形式。重点讲解了Java中LinkedList的常用操作:增(add、addFirst、addLast)、删(remove、removeFirst、removeLast)、改(set)、查(get、contains、indexOf)。结合实例演示,帮助理解链表在实际开发中的应用,推荐读者关注专栏持续学习数据结构知识。原创 2026-09-04 20:25:45 · 310 阅读 · 0 评论 -
ArrayList 超详细解析:方法使用|发牌程序|杨辉三角|底层模拟实现
<think>我们根据要求,需要生成≤150字的文章摘要。摘要要概括主要内容:数据结构简介,ArrayList特征、方法及模拟实现。需简洁。</think>本文介绍了数据结构概念及Java中的ArrayList顺序表,对比数组差异,详述创建方式、常用增删改查方法(如add、remove等),并预告模拟实现自己的顺序表。内容面向Java学习者,强调集合类使用及代码示例。原创 2026-09-03 22:26:20 · 677 阅读 · 0 评论 -
包装类和泛型的详细解析
<think>我们根据内容生成摘要,不超过150字。要点:包装类用于泛型等机制,自动装箱拆箱;缓存范围;泛型避免Object转换,类型参数,限制,通配符。概括即可。注意字数。</think>本文介绍了Java包装类与泛型:包装类将8种基本类型转为引用类型,支持自动装箱拆箱,并存在-128~127缓存;泛型通过类型参数避免Object转换的麻烦,可限制类型范围,通配符实现引用灵活指向。为数据结构学习作铺垫。原创 2026-09-03 22:25:08 · 237 阅读 · 0 评论 -
时间复杂度、空间复杂度概念,计算方法解析
摘要 本文是数据结构专栏的开篇,重点介绍算法效率评估的两个核心标准:时间复杂度和空间复杂度。时间复杂度通过重复性操作次数衡量代码执行效率,忽略低次项和系数,关注增长趋势(如O(N²)、O(logN))。文章分析了冒泡排序(最坏O(N²),最好O(N))、二分查找(O(logN))和递归算法(如阶乘O(N)、低效斐波那契O(2^N))的时间复杂度计算,强调对数时间的高效性。所有代码示例采用Java实现,适合配合已更新的JavaSE专栏复习基础知识。原创 2026-09-02 21:12:00 · 450 阅读 · 0 评论
分享