数据结构
文章平均质量分 62
羽晨同学
自己的人生由自己做主,加油
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
计数排序和排序总结
🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 我们接下来进行一下详细的讲解:对于计数排序而言,计数排序的时间复杂度是O(N+range)空间复杂度是O(range)计数排序适合于数据范围特别集中的数据。原创 2024-08-25 10:35:21 · 372 阅读 · 1 评论 -
数据结构系列-归并排序
首先,我们给到归并排序在.h文件中的定义。原创 2024-08-25 09:41:22 · 779 阅读 · 0 评论 -
选择排序和堆排序
我们的本意是想让数组中的值发生交换,但代码却写成了数组中的值和数组外面的值进行交换。我们遍历所有的数组,然后挨个找到大的数字,然后与前面已经排好序的进行交换。堆排序包括两步,首先,我们需要建堆,其实,我们要利用堆的性质进行排序。而这里,其实为了提高效率,我们也可以在遍历的同时找到最大的那一个。并且,我们没有对最大值和最小值具体交换的位置进行确切的思考。我们其实可以很清楚的看到关于选择排序的运行逻辑,将代码逻辑修改之后,我们发现,结果才正确了。开始的时候,我们先对堆排序进行声明。原创 2024-08-23 17:44:05 · 380 阅读 · 0 评论 -
力扣刷题-循环队列
我们在这里采用的是用数组的形式实现循环链表,我认为这个用数组是更为简单的,我们只需要控制下标就可以实现循环链表的效果。原创 2024-08-13 08:57:25 · 465 阅读 · 0 评论 -
数据结构系列-插入排序和希尔排序
希尔排序法又称缩小增量法,希尔排序法的基本思想是,先选定一个整数,把待排序文件中所有记录分成个组,所有距离为..的记录分在一个组内,并对每一组进行排序。然后,取,重复上述分组和排序的工作,当到达=1时,所有记录在统一组内排好序。把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入为止,得到一个新的有序序列。1.元素集合越接近有序,直接插入排序算法的时间效率越高。3.空间复杂度O(1),它是一种稳定的排序算法。2.时间复杂度O(N^2)原创 2024-07-27 21:19:56 · 202 阅读 · 0 评论 -
数据结构系列-二叉树之前序遍历
这篇文章,我们主要的内容是对二叉树当中的前历的算法进行讲解,二叉树中的算法所要求实现的是 从根到左子树再到右子树的遍历顺序,可能这样不太好理解,我们拿一张图片进行解释,我们先来分析一下这个的实现逻辑是什么,按照根节点,左子树,右子树的顺序,我们先来判断一下这个应该实现的结果是什么。在这里,我们将空也表现了出来,那下面,我们就讲解一下怎么用代码实现这个过程。假设在这个二叉树当中,我们要实现二叉树遍历当中的前历,我们应该怎么做呢。这些代码我们在前面就详细的进行了展开,在这里我们就不进行详细的讲解。原创 2024-04-26 22:15:03 · 524 阅读 · 0 评论 -
数据结构系列-堆排序当中的T-TOK问题
在这个代码当中有几个比较厉害的点需要我们注意一下,首先在他的创建数据的那个阶段,我们使用了随机数,但是它那里进行了取余,这样的好处是将数字的范围控制在一个程度之内,可以检测自己的程序是否正确表达。T-TOK说简单点,就是说,假如有10000个数据(随机的),让你找到其中最大的10个数据,有什么快速的方法,遍历吗?这个是不显示的,效率是最低的。之前我们讲到了堆排序的实现逻辑,那么接下来我们重点关注的就是其中的T-TOK问题。所以,我们能想到的比较好的方法就是堆排序当中的T-TOK问题。原创 2024-04-24 22:36:59 · 593 阅读 · 0 评论 -
数据结构系列-堆排序
今天我们开始讲解一下堆排序和T-TOK问题,这个也是堆排序相对于qsort排序和冒泡排序来说最大的竞争力,首先我们。原创 2024-04-24 22:12:26 · 1046 阅读 · 4 评论 -
数据结构系列-堆排序
堆的排序的最大的优点就是提高的效率,减小了时间复杂度,在这个里面我们有一个向上调整堆,时间复杂度是N,还有一个向下调整算法,时间复杂度是N*logN。昨天我们实现的堆的搭建,我们今天实现以下堆的排序,原创 2024-04-22 22:15:32 · 429 阅读 · 0 评论 -
数据结构系列-堆的实现
堆实现的是完全二叉树,其中最重要的也是最关键的需要解决的就是当插入一个数据的时候,我们可能这个数值会比他的祖先要小(假设我们要实现的小堆),我们就需要让插入的这个成为祖先,然后祖先成为小辈,所以,我们实现的逻辑是通过调换以及向上调整算法。然后关键的是实现堆顶元素的删除,当正常删除堆顶元素的时候,我们会发现父辈儿子的顺序会被打乱,所以在这里我们采用的方法是堆顶先于堆尾进行交换,然后进行删除操作,然后进行向下调整,代码如下。堆的实现,其实也就是二叉树的实现,我们在这里是基于数组对其进行实现的!原创 2024-04-19 19:54:56 · 617 阅读 · 0 评论 -
数据结构初阶-二叉树
二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来只是元素的逻辑关系,通常的方法是链表中每个节点有三个域组成,数据域和左右指针域,左右指针分别用来给出该节点左孩子和右孩子所在的链节点的存储地址,链式结构又分为二叉链和三叉链,当前我们学习中一般都是二叉链。2.完全二叉树,完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的,对于深度为K的,由n个节点的二叉树,当且仅当每一个节点都与深度为K的满二叉树中编号从1至n的节点-一一对应时称为完全二叉树,要注意的是满二叉树是一种特殊的完全二叉树。原创 2024-04-19 09:16:49 · 1346 阅读 · 0 评论 -
数据结构系列-队列的结构和队列的实现
队列:只允许在一端进行插入数据操作,在另一端进行删除删除数据操作的特殊线性表,队列具有先进先出FIFO,进行插入操作的一端称为队尾,进行删除操作的一端称为队头。队列也可以数组和链表的结构实现,使用链表的结构实现更优一点,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低。原创 2024-04-05 16:58:01 · 613 阅读 · 0 评论 -
数据结构入门系列-栈的结构及栈的实现
栈:一种特殊的线性表,其只允许在固定的一段进行插入和删除元素操作,进行数据输入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last in first out)的原则。栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些,因为数组在尾上插入数据的代价比较小。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。后进先出(Last in first out)出栈:栈的删除操作叫做出栈,出数据也是在栈顶。原创 2024-04-05 16:05:24 · 630 阅读 · 0 评论 -
数据结构系列-空间复杂度讲解
空间复杂度不是程序占用了多少bytes的空间,因为这个也没有太大意义,所以空间复杂度算的是变量的个数,空间复杂度计算规则基本跟时间复杂度类似,也使用大O渐进表示法。注意:函数运行时所需要的栈空间(存储参数,局部变量,一些寄存器信息等)在编译期间已经确定好了,此空间复杂度主要通过函数在运行时候显示申请的额外空间来确定的。空间复杂度也是一个数学表达式,是对一个算法在运行过程中临时占用存储空间大小的量度。原创 2024-03-23 22:17:40 · 257 阅读 · 0 评论 -
数据结构系列-算法的时间复杂度&算法效率
时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间,一个算法执行所耗费的时间,从理论上来说,是不可能算出来的,只有你把你的程序放在机器上跑起来,才能知道,但是我们需要每个算法都上机测试吗?时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间,计算机发展的早期,计算机的存储容量很小,所以对空间复杂度很是在乎,但是经过计算机行业的迅速发展,计算机容量已经发到了很高的程度,所以我们如今已经不需要再特别关注一个算法的空间复杂度。原创 2024-03-23 22:08:26 · 765 阅读 · 0 评论 -
数据结构系列-链表实现
【代码】数据结构系列-链表实现。原创 2024-03-10 17:02:58 · 423 阅读 · 0 评论 -
数据结构-链表
【代码】数据结构-链表。原创 2024-03-04 09:19:07 · 986 阅读 · 0 评论 -
数据结构-单链表
增容一般是呈2倍的增长,势必会有一定的空间浪费,例如当前容量为100,满了以后增容到200,但是我们只插入了五个数据,后面就没有数据插入了,那么就浪费了95个数据空间。增容需要申请新空间,拷贝数据,释放旧空间,会有不小的消耗。是否存在一种数据结构,能够解决以上顺序表表现出来的问题,线性表的逻辑结构一定是线性的,物理结构不一定是线性的,中间/头部的插入删除,可以一步到位,不需要挪动数据。中间/头部的插入删除,时间复杂度为O(N)链表是由一个一个的节点(结点)组成的。而链表,物理结构一定不是线性的。原创 2024-03-02 09:18:46 · 551 阅读 · 0 评论 -
数据结构系列-通讯录项目
【代码】数据结构系列-通讯录项目。原创 2024-02-28 17:24:12 · 1578 阅读 · 0 评论 -
C语言-数据结构-顺序表
当我们想要使用大量使用同一类型的数据时,通过手动定义大量的独立的变量对于程序来说,可读性非常差,我们可以借助数组这样的数据结构将大量的数据组织在一起,结构也可以理解为组织数据方式。常见的数值1,2,3,4.....,教务系统里保存的用户信息,(姓名,性别,年龄,学历等),网页里肉眼可以看到的信息(文字,图片,视频等等),这些都是数据。线性表是N个具有相同特性的数据元素的有限序列,线性表是一种是实际中极其有用的数据结构,常用的线性表:顺序表,链表,栈,队列,字符串.....给多了,会导致空间的大量浪费。原创 2024-02-27 17:46:27 · 1245 阅读 · 1 评论
分享