Nadav's 算法之旅

算法与数据结构

优先队列基于二叉堆实现,按优先级动态排序,核心操作siftUp与siftDown保证极值元素高效出队。本文详解优先队列的工作原理,提供完整的Java手写实现代码,并介绍其在任务调度、Dijkstra算法、网络流量管理和实时数据处理中的应用场景。

阅读全文 »

堆是一种基于完全二叉树的数据结构,分为最大堆和最小堆,采用数组存储并通过索引定位父子节点。核心操作siftUp和siftDown以O(log n)维护堆性质,堆化操作可在O(n)内将数组转为堆。本文详解最小堆的数组实现、插入删除源码及位运算技巧。

阅读全文 »

排序算法通过比较和交换实现数据有序排列,选择合适算法需考量数据规模、稳定性与时空复杂度。本文梳理排序算法核心概念与优化策略,指出遍历是排序的起点与终点,提供Java实战中数组遍历、查找最小值、交换元素与扩容等基础技巧。

阅读全文 »

树是由节点和边构成的层级数据结构,涵盖根节点、子树、度、深度等核心概念。常见类型包括二叉树、二叉搜索树、AVL树和红黑树。本文重点讲解满二叉树、完全二叉树与斜二叉树的区别,介绍数组和链表两种存储方式,以及前序中序后序层序四种遍历方法。

阅读全文 »

面向Java开发者的算法与数据结构专栏,从数组链表等基础入手,深入Java标准库源码剖析,结合LeetCode实战演练。进阶涵盖高级数据结构与动态规划、图算法,专业篇聚焦性能优化与真实案例,最终以击穿三百道经典题培养计算机思维。

阅读全文 »

插入排序将数组分为有序和无序两部分,每次从无序区取出元素在有序区从后向前扫描找到合适位置插入。算法简单直观、稳定排序,适合小型或部分有序数组。本文以表格和动画演示排序过程,提供Java基础版与泛型版实现。

阅读全文 »

冒泡排序通过重复遍历数组、比较并交换相邻元素,将最大值逐步冒泡至末端,是一种简单稳定的排序算法。本文以表格和动画演示排序过程,提供基础版与Java泛型版实现,分析其O(n^2)时间复杂度及适用场景。

阅读全文 »

选择排序每轮从未排序部分找出最小元素放到已排序区末尾,逐步完成排序。算法简单直观但不稳定,时间复杂度始终为O(n^2)。本文以表格和动画演示排序过程,提供Java基础版与泛型版实现代码,分析其适用场景。

阅读全文 »

节点是构建链表、树、图等复杂数据结构的基础单元,包含数据与指向其他节点的引用。本文详解单链表、双链表、树节点和图节点的Java实现,演示链表的遍历插入更新删除操作,并分析节点结构在不同算法中的时间与空间复杂度影响。

阅读全文 »

手写ArrayList深入解析基于数组的List实现原理,从线性表基本概念出发,剖析底层数组结构包括默认容量、elementData存储。本文详解初始化、元素添加、数组扩容、指定位置插入、替换与删除等关键操作的Java代码实现,配合图示直观展示ArrayList内部机制。

阅读全文 »
0%