数据结构
文章平均质量分 92
数据处理+算法
YouEmbedded
愿能与同路的你交流互鉴~
博客园 :https://www.cnblogs.com/YouEmbedded/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
解码查找算法与哈希表
查找算法是计算机科学中用于在数据集中定位目标值的关键技术。常见查找方法包括线性查找、二分查找和哈希查找。线性查找简单通用但效率低(O(n)),适用于无序数据;二分查找高效(O(logn))但要求数据有序,适合静态数据集;哈希查找速度最快(接近O(1))但实现复杂,需要处理冲突问题,适用于大规模数据和高频查询场景。不同算法各有优劣,实际应用中需根据数据特征和操作频率进行选择。原创 2025-10-07 20:39:06 · 1307 阅读 · 0 评论 -
解码排序算法
本文系统介绍了排序算法的基础概念与分类。排序是将无序序列按特定字段调整为有序序列的操作,其稳定性指关键字相同记录的相对位置是否改变。主要算法包括:1)插入类(如直接插入排序,稳定,适合基本有序小规模数据,时间复杂度O(n²));2)交换类(如冒泡排序O(n²)和快速排序O(nlogn),后者效率高但不稳定);3)选择类(如选择排序)。通过代码示例和步骤图解,文章对比了各类算法的核心思想、时间复杂度和适用场景,为不同数据特征提供了排序方案选择依据。原创 2025-10-05 19:27:27 · 888 阅读 · 0 评论 -
解码Huffman 编码与 Huffman 树
本文介绍了Huffman编码的原理与实现方法。Huffman编码通过赋予高频字符更短的编码、低频字符更长的编码,有效减少数据存储和传输的空间浪费。其核心是构建Huffman树,该树通过合并权值最小的节点,确保带权路径长度(WPL)最小,从而实现最优编码。文章详细阐述了Huffman树的构建步骤,包括节点合并、路径编码生成等关键过程,并提供了代码实现的思路。Huffman编码具有前缀特性,能保证解码无歧义,是一种高效的无损压缩算法。原创 2025-10-04 20:17:45 · 1533 阅读 · 0 评论 -
解码红黑树
红黑树:平衡与性能的折中方案 红黑树是一种自平衡二叉搜索树,通过5条约束规则(根节点黑、红不连红、黑高相同等)实现近似平衡,确保最长路径不超过最短路径的2倍。相比AVL树的严格平衡,红黑树在查找效率(O(logn))和插入/删除操作之间取得更好平衡。其节点设计包含父指针和颜色标记,插入操作分为BST插入和平衡修复两个阶段,通过颜色翻转和旋转操作维护平衡。红黑树被广泛应用于Linux内核、Java集合等系统,是高效数据结构的典型实现。原创 2025-10-03 19:25:49 · 945 阅读 · 0 评论 -
解码AVL树
二叉搜索树(BST)的平衡性至关重要,因为不平衡会导致树退化为链表,使搜索性能从O(log₂n)降至O(n)。平衡树通过确保任意节点左右子树高度差≤1来避免退化。AVL树是最早的自平衡BST,通过四种旋转操作(左旋、右旋及其组合)在插入/删除后恢复平衡,保证所有操作的时间复杂度为O(log₂n)。AVL树适合查询频繁但更新较少的场景,如数据库索引,但因其严格的平衡要求,在频繁更新的场景中效率不如红黑树。原创 2025-10-02 14:50:11 · 957 阅读 · 0 评论 -
解码数据结构树
摘要 树是一种重要的非线性数据结构,具有层次化的一对多关系。本文系统介绍了树的基本概念、术语及其在家族树中的应用,包括根节点、子树、度、层次等核心概念。重点阐述了二叉树的定义、五种基本形态及常见类型,如斜树、满二叉树、完全二叉树等。详细讲解了二叉查找树(BST)的有序性和操作原理,以及平衡二叉树(AVL树)的平衡特性。最后总结了两条重要性质:叶子节点数等于双分支节点数加1,以及每层节点的最大数量呈指数增长。全文通过图文结合的方式,清晰呈现了树结构的各种特性和应用场景。原创 2025-09-30 17:47:57 · 1512 阅读 · 0 评论 -
解码数据结构队列
队列是一种遵循先进先出(FIFO)原则的线性数据结构,与栈的后进先出(LIFO)形成对比。其核心操作包括在队尾入队(Enqueue)和在队头出队(Dequeue)。数组实现存在两种方式:普通数组队列出队需移动元素导致效率低下,而循环队列通过模运算实现下标循环复用,解决了空间浪费问题,是更高效的实现方式。循环队列的关键在于利用取模运算处理队头和队尾指针的循环移动,从而形成环形缓冲区结构,提升存储空间利用率。原创 2025-09-29 18:40:40 · 1218 阅读 · 0 评论 -
解码数据结构内核链表
摘要:普通链表因数据与逻辑强绑定导致通用性缺失,Linux内核通过list_head标准节点实现数据与逻辑分离。内核链表的核心是双向循环的list_head结构体,用户节点嵌入该结构体后即可复用通用操作。list_entry宏利用偏移量计算实现大小结构体指针转换,确保操作函数能适配任意数据类型。这一设计解决了普通链表在工程化应用中的冗余问题,提升了代码复用性和维护效率。原创 2025-09-28 16:24:13 · 637 阅读 · 0 评论 -
解码数据结构栈
栈的概念与实现摘要 栈是一种遵循后进先出(LIFO)原则的线性数据结构,主要用于需要特定存取顺序的场景(如函数调用)。栈分为顺序栈(数组实现)和链式栈(链表实现)两种形式。顺序栈通过数组存储数据,需管理栈顶指针和容量;链式栈则通过头插法实现动态扩容。核心操作包括入栈(Push)、出栈(Pop)、判空(IsEmpty)、判满(IsFull,仅顺序栈)等,时间复杂度均为O(1)。栈的典型应用包括表达式求值、递归调用和括号匹配等。原创 2025-09-27 16:18:48 · 1357 阅读 · 0 评论 -
解码数据结构线性表之链表
链表摘要 链表是一种非连续存储的线性数据结构,由节点(含数据域和指针域)通过指针链接而成。核心术语包括头指针、头节点、首节点和尾节点。链表分为单链表、双链表和循环链表,按是否带头节点可分为两类。相比数组,链表在插入/删除(O(1))时更高效,但随机访问需O(n)。单链表操作包括初始化、插入(头/尾/中)、查找(按值/位置)、修改和删除。带头节点的单链表通过固定头节点简化边界处理,典型操作如头部插入无需修改头指针,删除时需处理指针重定向。链表适合动态数据场景,但需注意内存管理和指针操作复杂度。原创 2025-09-26 17:49:30 · 949 阅读 · 0 评论 -
解码数据结构线性表之顺序表
顺序表是一种采用连续内存存储的线性表结构,其逻辑顺序与物理顺序一致。核心特性包括:基于数组实现,支持随机访问(O(1)时间复杂度),要求元素类型相同。实现方式分为静态(栈区数组,容量固定)和动态(堆区数组,可扩容)两种。静态顺序表适合数据量固定的场景,而动态顺序表通过内存管理函数实现运行时扩容(通常双倍扩容策略)。主要操作包括插入(需处理元素移动和扩容)、查找(按索引O(1)/按值O(n))、删除等,其中动态顺序表需注意内存释放以避免泄漏。有序顺序表可进一步优化查找效率至O(log₂n)。原创 2025-09-25 12:03:04 · 1139 阅读 · 0 评论 -
解码数据结构基础
数据结构是计算机存储和组织数据的方式,旨在提高数据访问效率。其核心包括数据元素、数据项、数据对象等概念,分为逻辑结构(集合、线性、树状、图状)和物理结构(顺序、链式)。算法是解决问题的具体步骤,具有有穷性、确定性等特征,通过时间复杂度和空间复杂度衡量优劣。理想的算法应在高效执行和低内存占用间取得平衡,同时具备良好的可读性和可维护性。数据结构与算法共同构成了程序的基础。原创 2025-09-24 22:34:13 · 437 阅读 · 0 评论
分享