
数据结构
文章平均质量分 90
是Nero哦
正在努力提升自己,若能得各位之建议、批评、抑或是关注,不胜感激
展开
-
数据结构排序——计数排序和排序总结(附上912. 排序数组讲解)
排序算法时间复杂度空间复杂度稳定性直接插入排序O(N^2)O(1)稳定希尔排序O(N^1.3)O(logN)不稳定选择排序O(N^2)O(N)不稳定堆排序O(N*logN)O(N)不稳定冒泡排序O(N^2)O(1)稳定快速排序O(N*logN)O(logN)不稳定归并排序O(N*logN)O(N)稳定希尔:根据gap分组不在一个组选择:3 3 1 1…堆排序:向下调整过程快排:相同的数字其中一个在keyi的位置。原创 2024-01-14 12:10:56 · 1201 阅读 · 12 评论 -
数据结构排序——详细讲解归并排序(c语言实现递归及非递归)
上次是快排和冒泡:今天为大家带来归并排序。原创 2024-01-13 10:01:02 · 965 阅读 · 22 评论 -
数据结构排序——详解快排及其优化和冒泡排序(c语言实现、附有图片与动图示意)
上次讲了选择排序和堆排序:数据结构排序——选择排序与堆排序今天就来快排和冒泡1.2.3 前后指针版1.3快排的优化1.3.1三数取中选key代码在Hoare版已经展示过了1.3.2递归到小的子区间时,可以考虑使用插入排序1.3.3大量重复数据采用三路划分基本步骤:1.4快排非递归2.冒泡排序好啦,这次内容就到这里啦,下次带来归并排序,感谢大家支持!!!原创 2024-01-11 09:25:00 · 1616 阅读 · 64 评论 -
数据结构排序——选择排序与堆排序(c语言实现)
选择排序(Selection Sort):是一种简单直观的排序算法.它的基本思想是在未排序序列中找到最小(大)的元素,放到序列的起始位置,然后再从剩余未排序元素中找到最小(大)的元素,放到已排序序列的末尾。重复这个过程,直到所有元素都排好序。之前在堆应用这篇文章我已经讲过了堆排序和TOP-K问题,详细可见:()[]那这次就再次大致讲解一下如果是升序,就建立大堆;是降序就建立小堆。因为思路是(以升序为例):大堆的堆顶一定是最大的,我们就把堆顶与堆尾交换后,除去最后一个对新堆顶进行向下调整。完成后原创 2024-01-09 13:52:17 · 1243 阅读 · 58 评论 -
数据结构排序(一.基本概念、插入排序和希尔排序实现)
今天也要迈向全新的篇章了——排序。这次就先大概讲解一下排序,然后插入排序和希尔排序的介绍和实现:1.排序的概念和运用1.1概念1.2运用2.常见排序一览3.直接插入排序3.1基本思想3.2具体实现3.3过程示图4.希尔排序4.1思想、过程和性质4.2代码实现原创 2024-01-07 17:20:08 · 1591 阅读 · 7 评论 -
二叉树链式结构的实现(二叉树的遍历以及各种常用功能函数的实现)
之前也是把堆部分的知识点梳理完毕(即二叉树链式顺序的实现):堆的应用:堆排序和TOP-K问题那么讲完了二叉树链式结构的实现。今天就进入二叉树链式结构的实现:构建的二叉树如图:递归实现的关键在于将问题分解为规模更小的子问题,然后通过函数的递归调用来解决子问题。在二叉树遍历中,递归的思想可以很自然地应用,因为遍历左子树和右子树本质上就是对规模更小的子树进行遍历方便大家理解,我就把NULL也写上:原创 2024-01-04 13:11:30 · 1246 阅读 · 26 评论 -
堆的应用:堆排序和TOP-K问题
上次才讲完堆的相关问题,那今天就接着来进行堆的主要两方面的应用:堆排序和TOP-K问题1.堆排序1.1概念、思路及代码1.2改良代码 (最初建立大堆用AdiustDow)2.TOP-K问题原创 2024-01-01 22:56:32 · 1220 阅读 · 37 评论 -
二叉树顺序结构与堆的概念及性质(c语言实现堆)
二叉树的顺序结构普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。完全二叉树就比较适合使用顺序结构存储(数组)。现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储注意:此堆非“彼堆”——操作系统虚拟进程地址空间中的堆。二者一个是一个是数据结构,一个是操作系统中管理内存的一块区域堆的概念和结构堆需要满足两点:1. 堆是一个完全二叉树,即除了最底层,其他层都是完全填满,最底层从左到右填充2. 堆中的每个节点的值都必须大于等于(最大堆)或小于等于(最小堆)其子节点的值原创 2023-12-30 16:49:06 · 1234 阅读 · 44 评论 -
二叉树数据结构:深入了解二叉树的概念、特性与结构
在探索栈和队列之后:我们转向了更为复杂而有趣的数据结构——二叉树。本文将引领我们进入二叉树的世界,从最基本的概念和结构开始,逐步深入了解二叉树的顺序结构和链式结构树概念和结构1.1树的概念1.2树的相关概念1.3树的表示1.4树的实际应用2.二叉树概念和结构2.1二叉树的概念2.2两种特殊二叉树2.3二叉树的性质2.5二叉树的储存结构原创 2023-12-28 15:22:55 · 1127 阅读 · 25 评论 -
深入了解队列:探索FIFO数据结构及队列
之前介绍了栈:那就快马加鞭来进行队列内容的梳理。队列和栈有着截然不同的工作方式,队列遵循先进先出(FIFO)的原则,在许多场景下都表现出强大的效率和实用性队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)入队列:进行插入操作。此端称为队尾出队列:进行删除操作。此段称为队头原创 2023-12-26 07:58:03 · 2360 阅读 · 22 评论 -
探索栈数据结构:深入了解其实用与实现(c语言实现栈)
上次结束了链表部分的内容:链接未来:深入理解链表数据结构(二.c语言实现带头双向循环链表)然而,当我们涉及特定问题时,另一个非常有用的数据结构也开始显得至关重要——栈栈与链表有着截然不同的特性,它采用一种后进先出(LIFO)的策略,这意味着最后进入栈的元素将首先被取出。这样的特性赋予了栈在特定场景下独特的价值和功能源码可以去我的gitee:Nero的gitee栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些。栈只在一端进行插入和删除,选择数组尾端非常契合。原创 2023-12-23 18:01:08 · 1202 阅读 · 17 评论 -
链接未来:深入理解链表数据结构(二.c语言实现带头双向循环链表)
双向带头循环链表是一种特殊的双向链表。它与普通双向链表的不同之处在于:它有两个指针分别指向链表的头节点和尾节点,并且链表中的最后一个节点的指针指向头节点,形成循环。这种链表的特性允许在操作上更加灵活,可以快速地在链表的前后进行插入和删除操作,同时循环特性也使得在遍历链表时更为方便原创 2023-12-22 15:30:23 · 2180 阅读 · 37 评论 -
链接未来:深入理解链表数据结构(一.c语言实现无头单向非循环链表)
今天,我们将进一步深入,探讨另一个重要的数据结构——链表链表和顺序表一样,都属于线性表,也用于存储数据,但其内部结构和操作方式有着明显的不同。通过C语言的具体实现,我们将会更加直观地理解它链表是一种物理存储(实际上)结构上非连续、非顺序(杂乱随意排序)的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的源码可以打我的gitee里面查找:唔姆/比特学习过程2 (gitee.com)原创 2023-12-20 12:08:23 · 1569 阅读 · 44 评论 -
探索顺序表:数据结构中的秩序之美(c语言实现常见功能接口)
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表一般可以分为: 1. 静态顺序表:使用定长数组存储元素 动态顺序表:使用动态开辟的数组存储 涵盖全部功能具体代码实现原创 2023-12-17 17:02:50 · 1586 阅读 · 47 评论 -
打开数据结构大门:深入理解时间与空间复杂度
*那么现在就以算法的时间复杂度和空间复杂度开始,逐步探索这个数据结构的精彩之处 **原创 2023-12-12 17:17:20 · 1289 阅读 · 31 评论