数据结构
文章平均质量分 62
槐夏风清7
无用之用,方为大用
展开
-
【回溯法-附模板和例题分析】
所有回溯法的问题都可以抽象为树形结构!因为回溯法解决的都是在集合中递归查找子集,。既然是树形结构,遍历树形结构一定要有终止条件,所以回溯也有要终止条件。什么时候达到了终止条件,树中就可以看出,一般来说搜到叶子节点了,也就找到了满足条件的一条答案,把这个答案存放起来,并结束本层递归。回溯法一般是在集合中递归搜索,集合的大小构成了树的宽度,递归的深度构成的树的深度。可以从图中看出,这样就把这棵树全遍历完了,一般来说,搜索叶子节点就是找的其中一个结果了模板:回溯算法中函数返回值一般为void。原创 2023-09-02 12:49:53 · 285 阅读 · 0 评论 -
【01背包问题——附例题讲解】
0/1 背包问题,作为动态规划问题的经典问题,可以帮助捋顺思维。核心就是有一堆物品,有两个维度的限制,在保证一个维度限制的情况下,使得另一个维度最优。原创 2023-07-29 22:17:00 · 818 阅读 · 0 评论 -
【完全背包问题——附例题剖析】
完全背包和01背包问题唯一不同的地方就是,每种物品有无限件。原创 2023-07-30 22:33:40 · 375 阅读 · 0 评论 -
排序算法——插入排序
最坏的情况是待排序数组是逆序的,此时需要比较次数最多,总次数记为:1+2+3+…+N-1,所以,插入排序最坏情况下的时间复杂度为O(n^2)在插入排序中,当待排序数组是有序时,是最优的情况,只需当前数跟前一个数比较一下就可以了,这时一共需要比较N- 1次,时间复杂度 O(n)按照此法对所有元素进行插入,直到整个序列排为有序的过程,称为插入排序。原创 2023-07-03 11:42:29 · 51 阅读 · 0 评论 -
排序算法——选择排序
选择排序算法:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。j++)原创 2023-05-25 12:27:04 · 61 阅读 · 0 评论 -
排序算法——快速排序(单边,双边划分,随机划分 三位取中划分 通俗易懂 )
单边划分,双边划分 随机划分 三位取中划分 通俗易懂原创 2023-05-10 10:54:08 · 433 阅读 · 0 评论 -
堆排序——最大堆(通俗易懂,动图演示,静态分解 详解版)
当我们将一个完全二叉树调整为最大堆时,发现根节点为数组中最大值,所以可以用这种方式将每一轮的最大值依次放入数组尾部,从而实现将无需数组重新按由小到大的顺序排列。将最大堆的根节点和数组的最后一个数据进行交换,然后数组前 n-1 个数据再次进行最大堆调整,再次交换,以此类推,即可得到最终从小到大排序的数据。如上图,将数组ar抽象构建成一棵完全二叉树,若每个节点的值都大于其左右孩子节点 ,则该完全二叉树为最大堆。堆排序的是将数组构建成最小堆或者最大堆的方式,对数据进行排序,其时间复杂度为O(nlog n);原创 2023-04-05 21:23:41 · 1621 阅读 · 0 评论 -
链式结构-循环双链表
循环双链表的增删改查操作处理原创 2023-04-05 14:29:08 · 152 阅读 · 0 评论 -
链式结构-单链表
每个节点有两个域,数据域存储数据,指针域存储下一个节点的地址,无后续节点,则指针域为NULL(空指针)。用指针保存待删节点的地址,将指定节点的指针指向待删节点的后一节点,释放待删节点的内存。需要先将插入节点的指针指向后续节点,然后将上一个节点的指针指向插入节点便可。利用malloc函数申请内存空间,进行数据写入。,顺序不可改变,否则将无法找到后续节点)2.初始化函数(创建一个空链表)4.在指定节点后插入节点 函数。5.删除指定节点的后一节点。原创 2023-04-05 12:54:09 · 80 阅读 · 0 评论 -
线性表的顺序表示和存储
可扩容的顺序表。(线性表的顺序存储)原创 2022-11-03 12:38:37 · 100 阅读 · 0 评论 -
初识顺序栈
初识顺序栈原创 2022-11-18 21:12:05 · 374 阅读 · 0 评论 -
一元多项式表示及相加表示
一元多项式(排序,相加,头插法,尾插法....)原创 2022-11-02 17:47:58 · 257 阅读 · 0 评论