![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 83
自律的阿龙
努力学习编程中
展开
-
C语言希尔排序详解!!!速过
由于第一步的开荒,数组比刚开始有序的多但还是模糊,接下来如果我们把间隙改小,那每一个小组的数字就会增多,但又由于之前第一组的原因其实有些数据已经其实已经到了属于自己的位置,那接下来就会减少损耗(不用交换数据)。总的希尔排序,就是先分组,在排序,每次使模糊的答案清晰一点(每一次的损耗都会减小),最终当gap == 1时,只需轻轻擦拭即可得出答案。这一阶段呢就是要将每个组进行一个排序让其每个组都是有序的,这样形成一个散乱但比之前更有序的结果,可以从图中第一轮结果看出。首先传入一个数组a,和数组个数n。原创 2024-02-16 17:20:19 · 682 阅读 · 0 评论 -
快速排序详解!c语言
如果left(begin)先走,如果只有最后一个数字比key大这时begin 和 end 相遇,反而把key换到了最后一个位置,而唯一比key大的数字反而去了第一个,那就不满足,左小右大的原则了。快速排序顾名思义,快速的排序,事实也如此,他的应用面广泛同时确实很快,因为他的时间复杂度是o(nlogn),相比前面的(插入冒泡选择)三小只来说,它的速度确实遥遥领先,但相对的思想也更复杂。为什么要从right开始,因为你的key在数组的第一个位置,所以最后一次和key交换的数据一定要是比key小的。原创 2024-02-16 17:19:16 · 898 阅读 · 0 评论 -
选择排序!!!基础排序详解 C语言版
这是一个选择排序的流程图,其实很简单,就是每次挑选数字中最小的作为第一个 ,直到整个数据有序就结束了顾名思义,选择,那就是选取,选取其中最小的,放在最前面的位置,已经选好的位子,下一次就不加入选择了。每一次安排一个位置,直到所有位置都安排了。原创 2024-01-05 15:14:53 · 450 阅读 · 0 评论 -
C语言 二叉树详解(自我理解版)!!!二叉树的实现
(就如果J 是 E的右节点的话,那E的左节点就没有数据就浪费了一个空间)这里的父节点和子节点的计算可用 公式 child = parent / 2 + 1 (左节点)或 + 2(右节点).。当然既然是链式结构,上面的顺序结构可以找到父亲节点,那链式结构也有办法找到父节点,这就要用的三个指针的结构体,左右孩子节点,再加上父亲节点的指针。如图这是一个完全二叉树,完全二叉树与普通二叉树之间的差别在于,完全二叉树 的每一个子节点必须先有左边的子节点,才能有右边的子节点。:一棵树中,最大的节点的度称为树的度;原创 2023-12-12 20:37:43 · 1225 阅读 · 0 评论 -
C 语言 二叉树的实现详解!!!(每种方法都详细解释,哪里不会看哪里)
(建议先看后续遍历,就是先遍历全部节点,在进行操作)进行从遍历的最后一个节点开始,进行free,如果用前序遍历free的话,那你第一个根节点都free了你就找不到你的子树了,而中序遍历的话,就比如你刚把D删除了,中序遍历的话就会把 B先删除,那就找不到E节点,E节点就没被删除。那也就明了了 中序遍历就是 你先把左边走到 底 然后 先打印左边,在打印根的,在打印右边的。就像这里的打印的一样,你先把A打印出来了,然后 在走你的左边,打印出B后继续走B的左边,打印出D后,返回到B节点,B又走他的右边 打印E。原创 2023-12-12 20:35:23 · 1123 阅读 · 0 评论 -
c 语言 堆的解析(自我理解)!!!堆排序,建堆
首先先看一个图片小顶堆的意思就是顶 的元素最小,两个子节点的元素要大于父节点。大顶堆同理。小顶堆就像是一个金字塔。第一层很小,然后后面是依次增大,就像社会人才金字塔图一样。大顶堆就可以想做,每个人的财富拥有值的金字塔图,上层人的钱很多,而底层的人钱最少。那堆能干嘛呢,首先堆是可以用来排序的,而且排序的时间也是较快,处于(n*logn)这个层级。还有一个就是在频繁的出队和入队时,用堆是一个不错的选择。如果用数组和链表来完成pop和push时,时间复杂度是O(n)而用 堆就是O(log n)。原创 2023-12-08 18:36:18 · 1132 阅读 · 0 评论 -
循环队列详解!!c 语言版本(两种方法)双向链表和数组法!!
首先关于循环队列,你得先知道什么是队列,详情可以去看看我的另一篇博客数据结构 栈与队列详解!!-CSDN博客这里简单的说一下,队列就是字面意思,你在银行排队,你不是什么VIP只是普通人,那你先排队那你就先得服务,队列就是 你先插入的数字(入队),就得先放出(出队)。大致就是这个意思。而循环队列呢?他的原理也是队列,但和队列不同的地方在于,他的空间是固定的。在一个空间里进行重复的入队出队。这是一张循环队列的大致图。其中和队列一样有两个指针指向头和尾。添加实在尾针处加,而删除就是将队首的元素删除。原创 2023-11-22 14:11:41 · 217 阅读 · 0 评论 -
数据结构 栈与队列详解!!
关于内存中的栈和数据结构中的栈是不同的,本章着重讲的是数据结构的栈。这是一张关于栈的表达图。从图中可以看出栈很像是一副卡牌,发牌时只能从上取出,即出栈。而入栈则是像你出牌后,要把你出的牌压在上一张出的牌上面。这是入栈。栈可以用链表或者顺序表实现,原创 2023-11-18 18:55:13 · 348 阅读 · 2 评论