
数据结构-初阶
文章平均质量分 93
初阶数据结构内容分享
Cx330❀
一个正在努力奋斗逆天改命的二本觉悟生
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【数据结构初阶】--排序(五):计数排序,排序算法复杂度对比和稳定性分析
这篇博客介绍了计数排序的实现原理和具体代码实现,并总结比较了常见排序算法的复杂度与稳定性。计数排序通过统计元素出现次数实现非比较排序,时间复杂度O(n+range),空间复杂度O(range),稳定性好。文中还分析了直接选择排序、希尔排序、堆排序和快速排序的不稳定性表现,并提供了完整的排序算法代码实现(包括插入、希尔、堆、冒泡、快速、归并、计数等排序)。最后通过测试案例验证了排序效果,为数据结构初阶的排序专题画上句号。原创 2025-08-16 11:07:14 · 1324 阅读 · 11 评论 -
【数据结构初阶】--排序(四):归并排序
本文介绍了归并排序的递归和非递归实现方法。归并排序采用分治思想,将数组不断分割为更小的子数组直到单个元素,然后逐步合并有序子数组。递归版本通过mid划分左右区间递归处理,非递归版本则通过gap控制分组大小自底向上合并。两种实现都使用临时数组存储中间结果,时间复杂度均为O(nlogn)。性能测试对比了多种排序算法,结果显示希尔排序、快速排序、堆排序和归并排序表现优异。文章还提供了完整的代码实现和测试用例,验证了排序的正确性和效率。原创 2025-08-16 08:39:00 · 1169 阅读 · 11 评论 -
【数据结构初阶】--排序(三):冒泡排序、快速排序
本文介绍了两种交换排序算法——冒泡排序和快速排序的实现与性能分析。冒泡排序通过优化后的双层循环实现,时间复杂度为O(N^2)。快速排序采用递归思想,详细讲解了hoare、挖坑法和前后指针三种基准值划分方法,时间复杂度为O(n*logn)。还提供了非递归版快速排序实现,借助栈结构完成。性能测试显示快速排序远优于冒泡排序。文章包含完整代码实现、测试结果和复杂度分析,适合数据结构初学者学习排序算法。原创 2025-08-15 23:02:07 · 1673 阅读 · 7 评论 -
【数据结构初阶】--排序(二):直接选择排序,堆排序
【摘要】本文介绍了两种排序算法:直接选择排序和堆排序。直接选择排序通过在剩余元素中同时选择最小和最大值进行优化,时间复杂度为O(n²)。堆排序利用堆数据结构实现,时间复杂度更优为O(nlogn),其中详细讲解了向下调整算法的实现。文章通过代码示例和图解展示了两种排序的具体实现,并进行了性能测试对比,结果显示堆排序在大数据量下明显优于直接选择排序。测试代码包含完整的排序实现和性能比较功能,验证了两种排序算法的正确性和效率差异。原创 2025-08-15 09:33:17 · 743 阅读 · 17 评论 -
【数据结构初阶】--排序(一):直接插入排序,希尔排序
本文介绍了两种常见的排序算法:直接插入排序和希尔排序。直接插入排序通过逐个插入元素到有序序列实现排序,时间复杂度为O(N²),适合接近有序的数据。希尔排序是对直接插入排序的优化,采用分组排序策略,时间复杂度约为O(N^1.3)。通过10万条数据的性能测试显示,希尔排序效率明显优于直接插入排序。文章包含两种排序的C语言实现代码、测试结果及复杂度分析,适合想了解基础排序算法的读者参考。原创 2025-08-14 17:59:00 · 1284 阅读 · 10 评论 -
【数据结构初阶】--二叉树选择题专辑
这篇博客讲解了二叉树的选择题解题技巧和思路。首先介绍了二叉树的重要性质:叶子节点数n0=度为2节点数n2+1,并给出了推导过程。接着通过4道选择题展示了如何运用该性质解题,包括计算叶子节点数、完全二叉树高度等。第二部分讲解了链式二叉树的遍历选择题解答方法,包括根据层序/先序/中序/后序遍历序列确定二叉树结构,并找到正确答案。最后作者总结了二叉树相关内容,并预告后续将更新LeetCode相关题解。文章提供了详细的解题思路,适合巩固二叉树知识。原创 2025-08-14 15:00:01 · 1109 阅读 · 7 评论 -
【数据结构初阶】--二叉树(六)
本文介绍了二叉树层序遍历和完全二叉树判断的实现方法。层序遍历通过队列实现,先入队根节点,每次取出队首节点并访问后,将其左右子节点入队。判断完全二叉树的方法同样借助队列:若遍历过程中遇到空节点后队列中仍有非空节点,则不是完全二叉树。文章提供了详细的代码实现(包括头文件和源文件)、图解说明和测试用例,验证了两种算法的正确性。这些二叉树操作是数据结构学习的重要内容,结合队列实现了广度优先的遍历方式。原创 2025-08-11 11:06:00 · 1205 阅读 · 7 评论 -
【数据结构初阶】--二叉树(五)
本文介绍了二叉树常用接口的实现方法,包括计算节点个数、叶子节点个数、第k层节点个数、树的高度以及查找特定值节点等。通过递归方式实现了各功能函数,并给出了完整的测试代码。文章首先优化了二叉树的创建方法,然后详细讲解了每个接口的实现思路和代码逻辑,最后展示了完整的头文件、源文件和测试用例。所有功能均通过测试验证,结果正确。文章还预告了下篇将介绍的层序遍历和判断完全二叉树的内容。代码实现充分体现了递归思想在二叉树操作中的优势。原创 2025-08-11 09:17:19 · 834 阅读 · 0 评论 -
【数据结构初阶】--二叉树(四)
本文介绍了链式结构二叉树的创建与遍历实现。文章首先讲解了如何使用链表表示二叉树,定义节点结构并手动创建示例树。重点详细阐述了前序、中序、后序遍历的递归实现,通过图示展示了每种遍历方式的函数递归栈帧过程,帮助读者理解递归逻辑。前序遍历顺序为根-左-右,中序为左-根-右,后序为左-右-根。最后提供了完整的代码实现,包括头文件、源文件和测试用例。文章强调通过画递归栈帧图来理解遍历过程,为后续二叉树操作打下基础。原创 2025-08-10 15:34:47 · 780 阅读 · 2 评论 -
【数据结构初阶】--二叉树(三)
本文探讨了堆排序中的两种建堆算法:向上调整和向下调整。通过数学推导证明,向上调整建堆时间复杂度为O(n*logn),而向下调整仅需O(n),因此后者更优。随后重点讲解了Top-K问题的解决方案:使用堆结构处理大数据量时的高效筛选方法,包括建立小/大堆、比较剩余元素等步骤,并提供了完整的C语言实现代码。最后通过测试验证了该算法的有效性,为处理海量数据前K个极值问题提供了实用方案。原创 2025-08-10 10:39:31 · 784 阅读 · 2 评论 -
【数据结构初阶】--二叉树(二)
本文介绍了堆(Heap)数据结构的实现与应用。主要内容包括:1.堆的概念与结构,分为大堆和小堆;2.堆的基本操作,包括初始化、销毁、插入(使用向上调整算法)、删除(使用向下调整算法)、取堆顶等接口实现;3.两种堆排序方法:第一种基于堆数据结构实现,第二种利用堆思想实现(推荐);4.代码展示,包含Heap.h头文件定义、Heap.c实现文件及测试用例。文章重点讲解了堆的插入和删除操作中的向上和向下调整算法,并通过示例演示了堆排序的实现过程。最后强调动手画图理解的重要性,为后续学习二叉树等内容奠定基础。原创 2025-08-09 17:47:56 · 791 阅读 · 2 评论 -
【数据结构初阶】--树与二叉树预备篇
本文介绍了树与二叉树的基本概念和结构。树是一种非线性数据结构,由根节点和互不相交的子树组成,具有层次关系。详细讲解了树的专业术语(如度、层次、深度等)和表示方法(孩子兄弟表示法)。重点介绍了二叉树的特性:每个节点最多有两个子节点,且子树分左右次序。特殊二叉树包括满二叉树和完全二叉树。文章还说明了二叉树的两种存储结构:顺序存储(适合完全二叉树)和链式存储(二叉链)。作为数据结构系列的一部分,后续将深入讲解二叉树的实现。(149字)原创 2025-08-09 11:14:23 · 1118 阅读 · 2 评论 -
【数据结构初阶】--栈与队列(队列)
【摘要】本文详细介绍了队列的数据结构实现,包括基本概念、核心操作和完整代码示例。文章首先阐述了队列"先进先出"的特性及其链表实现方式,重点讲解了入队(QueuePush)和出队(QueuePop)操作的具体实现逻辑,分析了单节点和多节点情况下的处理方式。同时展示了获取队首(QueueFront)、队尾数据(QueueBack)以及计算队列大小(QueueSize)的方法,并提供了完整的队列销毁(QueueDestroy)实现。通过Queue.h头文件定义和Queue.c功能实现,配合te原创 2025-08-08 11:01:12 · 950 阅读 · 1 评论 -
【数据结构初阶】--栈与队列(栈)
本文介绍了栈的基本概念和实现方法。栈是一种后进先出(LIFO)的线性表,作者通过数组实现了栈结构,详细讲解了栈的初始化、销毁、入栈、出栈、取栈顶元素等核心操作。代码实现包括Stack.h头文件定义、Stack.c功能实现和test.c测试用例,完整展示了栈的各个接口功能。文章还比较了数组和链表实现栈的优劣,强调数组实现的空间效率优势。最后提醒读者要通过画图加深理解,为后续学习队列做准备。整体内容清晰实用,适合数据结构初学者学习参考。原创 2025-08-08 09:32:00 · 1068 阅读 · 6 评论 -
【数据结构初阶】--双向链表(二)
本文详细介绍了双向链表的实现方法,包括尾插、头插、尾删、头删、查找、指定位置插入/删除等核心操作。通过代码示例展示了每个接口的具体实现步骤和注意事项,并提供了完整的代码实现。文章还对比了顺序表与链表的区别,帮助读者理解双向链表的优势。作者以清晰的逻辑和详细的注释,为读者呈现了双向链表的完整实现过程,适合数据结构初学者学习参考。文中强调通过画图辅助理解链表操作的重要性,鼓励读者坚持练习以掌握链表的核心概念。原创 2025-08-07 10:39:33 · 688 阅读 · 2 评论 -
【数据结构初阶】--双向链表(一)
摘要:本文介绍了链表的8种分类方式(带头/不带头、单向/双向、循环/不循环),重点讲解带头双向循环链表的实现。内容包括节点结构定义、头节点(哨兵位)初始化方法,并提供了部分代码实现(List.h和List.c)。作为单链表的延续,本文为后续完整实现双向链表接口打下基础,适合数据结构初学者参考学习。(字数:150)原创 2025-08-07 09:10:02 · 860 阅读 · 1 评论 -
【数据结构初阶】--单链表(二)
本文详细介绍了单链表的基本操作实现,包括查找、指定位置插入/删除等核心接口。主要内容包括:1)单链表查找函数的实现与测试;2)在指定位置前/后插入节点的实现方法及注意事项;3)删除指定位置节点及其后继节点的实现;4)单链表的销毁操作。文中通过完整代码示例(包含.h、.c和测试文件)展示了每个接口的具体实现,并配有测试结果验证。作者强调画图理解和亲手实践的重要性,为后续学习双向链表等数据结构打下基础。文章结构清晰,代码注释详细,适合数据结构初学者循序渐进地学习单链表操作。原创 2025-08-06 16:22:10 · 1009 阅读 · 3 评论 -
【数据结构初阶】--单链表(一)
本文介绍了单链表的基本概念和基本操作实现。主要内容包括:1. 单链表概念及其与顺序表的区别,解决了顺序表插入删除效率低、增容消耗大和空间浪费的问题;2. 单链表节点的定义和结构;3. 单链表的基本操作实现:打印、尾插、头插、尾删、头删等接口函数;4. 每个操作的具体实现步骤和注意事项,如保持头指针不变、二级指针传参等;5. 完整的代码展示和测试用例。文章强调通过画图理解链表操作的重要性,并提供了往期回顾链接,为数据结构学习打下基础。原创 2025-08-06 11:21:58 · 736 阅读 · 2 评论 -
【数据结构初阶】--顺序表(三)
【数据结构学习笔记】顺序表操作全实现 本文完整实现了顺序表数据结构的基本操作,包括: 查找功能:遍历数组查找元素,返回下标或-1 指定位置插入:移动元素腾出位置后插入新数据 指定位置删除:覆盖目标位置数据并前移后续元素 修改操作:直接修改指定位置的值 销毁操作:释放内存并重置参数 每个操作都提供了代码实现和关键注意事项,并附有完整的测试案例。文章最后给出了完整的.h和.c文件代码,适合数据结构初学者系统学习顺序表的实现原理。通过这篇内容,读者可以掌握顺序表的核心操作实现方法。原创 2025-08-05 10:55:41 · 781 阅读 · 2 评论 -
【数据结构初阶】--顺序表(二)
本文详细讲解了顺序表的实现方法,重点介绍了尾插、头插、尾删和头删四个核心操作。内容包含:1)尾插操作的动态扩容机制,采用2倍扩容策略;2)头插操作需要整体后移元素;3)尾删只需修改size值;4)头删需要前移元素。文中提供了完整的C语言实现代码,并通过测试用例验证了各功能的正确性。最后分析了时间复杂度:尾插/删为O(1),头插/删为O(n),说明顺序表更适合频繁操作尾部数据的场景。作者预告后续将继续完善顺序表的其他操作接口。原创 2025-08-05 09:43:27 · 893 阅读 · 2 评论 -
【数据结构初阶】--顺序表(一)
本文介绍了顺序表的相关知识,包括线性表概念、顺序表的结构与分类。重点讲解了静态和动态顺序表的实现方式,并通过代码示例展示了动态顺序表的初始化过程。文章强调将代码分为头文件、实现文件和测试文件的模块化编程方法,并提醒读者注意传址调用的重要性。作者建议读者配合图表理解概念,养成边写代码边测试的好习惯。本文是数据结构系列的第二篇,后续将深入讲解顺序表的插入删除等操作实现,文末附有相关C语言知识的回顾链接。原创 2025-08-04 16:27:36 · 1146 阅读 · 2 评论 -
【数据结构初阶】--算法复杂度详解
数据结构(Data Structure)是计算机存储,组织(增删查改)数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。没有一种单一的数据结构对所有用途都有用,所以我们要学习各式各样的数据结构,如:线性表,树,图,哈希等。原创 2025-08-04 12:45:14 · 1509 阅读 · 2 评论