![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
文章平均质量分 84
小王学代码
我亦无他,唯手熟尔
展开
-
双指针算法
双指针主要分为:对撞指针和快慢指针,主要应用场景不同,下面是Leetcode题目,移动零,复写零,快乐数,盛最多水的容器,有效三角形的个数,和为s的两个数字,三数之和,四数之和。原创 2023-08-13 10:00:44 · 613 阅读 · 10 评论 -
堆(两种建堆方法)、堆排序和Top-K问题
本文主要是对于堆的定义,堆的两种创建方式,向上建堆和向下建堆,进行代码演示,并对其分析时间复杂度,且实现了堆排序,实际上堆排序就是先建立堆(向上向下都可,建议向下),然后使用while循环,循环n-1次对于头尾进行交换,然后进行向下调整,上文有详解,最后是对于Top-K堆问题的解释,并附上代码进行演示。原创 2023-04-05 20:58:01 · 740 阅读 · 51 评论 -
并查集和哈希表的实现
实现并查集,和哈希表的三种方法的建立,并查集可以用于求解两个结点是否在一个集合内,合并两个结点到一个集合里面,哈希表的主要作用是对于一个较大范围的数值进行压缩,有三种方法,开放寻址,拉链法,字符串哈希,附带代码的实现,接下来,会发布一些关于并查集,哈希表的一些习题原创 2023-03-24 11:43:08 · 1409 阅读 · 69 评论 -
贪心算法(几种常规样例)
可以用贪心算法解决的问题有以下特征1.贪心选择的性质:一个问题的整体最优解可以通过一系列局部的最优解的选择达到。并且每一次的选择可以依赖于之前做出的选择,但是不依赖后面做出的选择。这就是贪心选择性质。对于一个具体的问题,要确定他是否具有贪心选择的性质,必须证明每一步所作的贪心选择最终导致问题的整体的最优解2.最优子结构性质:当一个恩问题的最优解包含其子问题的最优解的时候,此问题具有最优子结构性质。问题的最优子结构性质是该问题可用贪心法的求解所在。原创 2023-03-14 12:51:29 · 2323 阅读 · 15 评论 -
【数据结构和算法】使用数组的结构实现链表(单向或双向)
上文我们通过结构体的结构实现了队列、以及循环队列的实现,我们或许在其他老师的教学中,只学到了用结构体的形式来实现链表、队列、栈等数据结构,本文我想告诉你的是,我们可以使用数组的结构实现链表、单调栈、单调队列。认识数组和链表。原创 2023-02-02 22:22:18 · 3358 阅读 · 116 评论 -
【数据结构和算法】认识队列,并实现循环队列
本文了解认识队列这一新的概念,我们也通过数组的结构实现循环队列,这一种方式实现循环队列是比较简单好理解的,主要的是理解MAXSIZE为什么要多一个空间,例如设置为11,还有判空,判满,操作。这是最为重要的。判空:rear==front判满:(rear+1)%MAXSIZE==front得到队列元素个数:(rear-front+MAXSIZE)%MAXSIZEfront、rear、i得到下一个位置的方法:例如:rear=(rear+1)%MAXSIZE原创 2023-01-30 15:51:31 · 910 阅读 · 53 评论 -
【数据结构和算法】了解认识栈,并实现栈的相关函数
栈是限定在一个表里面的一段,对其进行插入删除操作的线性表,数据进出的顺序为先进后处,应用场景:网页浏览的时候的后退 编辑软件的撤销,实际上栈的功能就这样,学会顺序表以及链表的使用,对于栈来讲,只是懂得头擦头删,理解概念了,就好掌握并实现栈。原创 2023-01-29 20:57:56 · 1376 阅读 · 46 评论 -
【数据结构和算法】实现带头双向循环链表(最复杂的链表)
我们本文主要讲解了,链表中最为复杂的带头双向循环链表的使用和代码实现,实现了头插尾插,头删尾删,初始化、打印、指定pos位置插入结点或者删除结点、寻找结点、摧毁链表等函数。并做了板书图示解释相应函数的流程,附带完整代码,以便帮助大家更好的理解。原创 2023-01-27 16:20:43 · 931 阅读 · 57 评论 -
【数据结构和算法】认识线性表中的链表,并实现单向链表
本文主要讲解了链表的分类是什么,两种常用的类型,无头单向非循环链表、有头双向循环链表,我们实现了无头单向非循环链表,这是比较简单的一种链表的实现,我们使用的是二级指针传参,当然使用一级指针传参也可以,主要实现函数为头尾插入,头尾删除,pos指定结点位置前后添加或者删除元素。原创 2023-01-26 20:01:54 · 1206 阅读 · 43 评论 -
【数据结构和算法】实现线性表中的静态、动态顺序表
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。我们本文讲解了,线性表中的顺序表的使用,我们分别实现了静态和动态的顺序表,这是数据结构的基础,我们接下来讲解的内容是线性表中的链表。原创 2023-01-25 16:37:09 · 1242 阅读 · 59 评论 -
快速排序法(详解)C语言
对于快速排序算法的认识原创 2022-12-30 12:09:00 · 1392 阅读 · 4 评论 -
二分查找的三种方法
对于已经排好序的数组,快速的寻找到指定元素,并返回其下标,这个时候就有二分查找的妙用提示:以下是本篇文章正文内容,下面案例可供参考第二种和第三种实质上差不多,最后返回 l 或者 r 都可以,最经典的是第一种方法,第二种第三种更快一点。//要找的就是大于x的 如果满足的话 mid 在x左边缩小范围为 r=mid 【l,mid】}}}原创 2022-12-29 21:44:43 · 2719 阅读 · 6 评论 -
万字超全详解:二叉树的基本操作(C语言版本)
本文主要内容:1.对于二叉树的基本操作,创建 、遍历 、前序、中序、后序输出等2.关于二叉树的自己的体会提示:以下是本篇文章正文内容,下面案例可供参考//使用顺序结构完成二叉树的基本操作//编写前序、中序、后序以及层次顺序遍历二叉树的算法,并计算二叉树的深度、所有的结点数}}//构造空二叉树i++) {//初始值为空 #表示为空}}int i = 1;//按照层次次序输入二叉树中结点的值='\0'){i++;}}//初始条件:二叉树T存在。原创 2022-12-27 22:21:47 · 286 阅读 · 9 评论