C++数据结构与算法
文章平均质量分 72
littleshimmer
这个作者很懒,什么都没留下…
展开
-
快速排序—数组、数组存储结构的链表排序算法
快速排序算法,数组快速排序算法步骤图解,快速排序算法时间复杂度分析,数组存储结构的链表快速排序算法,快速排序算法源码用C语言实现原创 2021-12-21 19:36:27 · 1199 阅读 · 0 评论 -
插入排序—数组、数组存储结构的链表排序算法
插入排序算法的思想,数组插入排序算法步骤图解,插入排序的时间复杂度,基于数组存储结构的链表插入排序的方法,C语言实现插入排序算法原创 2021-12-20 19:04:38 · 730 阅读 · 0 评论 -
冒泡排序—数组、数组存储结构的链表排序算法
冒泡排序算法的思想,数组冒泡排序算法步骤过程图解,包括基于数组存储结构的链表冒泡排序的方法,冒泡排序算法源码用C语言实现原创 2021-12-20 15:17:14 · 1390 阅读 · 0 评论 -
C++基于数组存储结构的链表设计与实现
基于数组存储结构的链表数组中的每一个元素附加一个指向后续元素的指针,对数组元素的访问顺序由指针指向的位置决定,这样可以不改变各个元素的物理位置,就可以改变数组的逻辑顺序这是一种基于数组的存储结构,倘若运算过程中数组的大小不发生改变则称之为静态链表,其实也可以改造为动态数组来实现基于数据存储结构的链表的每个元素包含:data数据和link指针域优点:对数组元素的插入、删除操作只需要修改链接指针而不需要移动元素,因此具有更高的效率缺点:查找元素需要从头部开始逐个遍历,随机存取较慢基于原创 2021-12-06 18:08:35 · 1573 阅读 · 0 评论 -
C++孪生数求解
【问题描述】李生数定义:如果A的约数(因数,包含1,但不包含A本身)之和等于B,B的约数(因数)之和等于A,A和B称为孪生数(A和B不相等)。试找出正整数M和N之间的挛生数。【输入形式】从控制台输入两个正整数M和N(1<=M<N<=20000),中间用一个空格分隔。【输出形式】在标准输出上输出符合题目描述的M和N之间的全部挛生数对(包括M和N)。每行输出一对孪生数,用一个空格隔开,小的先输出;各行李生数按照第一个数从小到大的顺序输出,一对挛生数只输出一次。如果没有符合要求的原创 2020-06-18 15:43:36 · 1766 阅读 · 0 评论 -
C++全排列以及从N个有序字符中选M位的排列
题目给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。我们假设对于小写字母有’a’ < ‘b’ < … < ‘y’ < ‘z’,而且给定的字符串中的字母已经按照从小到大的顺序排列。输入输入只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在1到6之间。输出输出这个字符串的所有排列方式,每行一个排列。要求字母序比较小的排列在前面。字母序如下定义:已知S = s1s2…sk , T = t1t2…tk,则S < T 等价于,存在p (1 &原创 2020-06-13 11:47:32 · 733 阅读 · 0 评论 -
C++迷宫寻路详解
迷宫寻路题目用一个5 × 5的二维数组,表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。分析1.使用一个比迷宫稍大的二维数组初始化为迷宫,简化位置判断。2.通过使用栈stack保存每一步的位置,当走不通时回退。3.每次访问迷宫中的一个位置,标记路径长度。4.遍历和标记迷宫完成后,从终点位置回溯,把符合的点依次进栈,最后全部输出栈。输入一个5 × 5的二维数组,表示一个迷宫。数据保证有唯一解。输出左上角到右下角的原创 2020-05-22 19:15:25 · 3295 阅读 · 1 评论 -
C++二叉树数据结构
C++二叉树数据结构什么是二叉树?二叉树是节点有限集合,集合或者为空,或者是由一个根节点加上两个子树的(左子树和右子树)、互不相交的节点组成的数据类型二叉树的每个节点最多有2个子女,且有左右之分不能颠倒,分别称为左子女和右子女二叉树中不存在只存在度为0的节点(即为叶子节点,无子女)、度为1的节点(只有一个子女的节点)、度为2的节点(左右子女都有的节点)二叉树是分支数不超过2的有序树,具有5中可能的形态:空二叉树、只有根节点的二叉树、只有左子树的二叉树、只有右子树的二叉树、左右子树都有的二叉树原创 2021-07-18 03:08:37 · 519 阅读 · 1 评论 -
C++并查集数据结构实现
什么是并查集?将N个不同元素,按照某些相似特征划分到不同的M(M<=N)个集合中实现对不同元素的合并,查找某个元素属于哪个集合,描述这类问题的抽象数据类型就称之为并查集并差集有哪些常见使用场景?实现等价类的划分构造最小生成树的Kruskal算法通过并查集判断最小生成树的连通性不同集合中判断任意两个元素是否同属于一个集合数据结构如何实现?对于N个元素,构造一个具有N个元素parent[N]数组,初始时初始化parent[i]为-1,`表示只有一个元素的集合把具有相似特原创 2021-07-17 17:54:30 · 264 阅读 · 0 评论 -
C++使用位向量实现集合数据类型
为什么使用位向量假设某大学有20000名学生,今年6月份安排对自愿接种新冠疫苗的学生接种疫苗,对所有学生有无接种情况进行分类并排序,要求使用效率最高,在C++中可使用位集合(向量)实现:1.20000个学生表示为N,每个学生编号号唯一,具有两种状态0或1,分别表示有无接种疫苗2.对于一个unsigned short数据类型,具有16位,每一位可表示0或1,那么可用N/16+1=1251个unsigned short可表示所有可能取值0或1,此时可映射为二进位数组A[1251]3.接下来就是对A[k]原创 2021-07-17 15:29:33 · 626 阅读 · 1 评论