
数据结构与算法
文章平均质量分 92
等一次另眼相看
我的眼里阳光在跳,天边有一方麦草,它们不肯被积雪压倒,努力长高
展开
-
基础暴力算法
模拟算法是一类通过模仿自然现象或物理过程来解决复杂问题的计算方法。模拟算法其实就是根据题目做,题目要求什么,就做什么。一些复杂的模拟题其实还是把一些简单的操作组合了一下,所以模拟题是最锻炼耐心的,也是训练编码能力的最好的暴力算法。原创 2024-12-10 20:00:09 · 831 阅读 · 0 评论 -
数据结构学习笔记(6)——图
图的存储结构图的顺序存储结构——邻接矩阵typedef struct { int no; //顶点编号,表示它的位置 char info; //顶点的其他辅助信息,没有的话可以删除}VertexType; //顶点 typedef struct{ int edges[maxSize][maxSize]; //顶点之间的相邻关系(无权值:1表示相通,0表示不相通)(有权值:∞表示不相通,其它为权值) int vexnum, arcnum; //总顶点数和原创 2022-04-05 21:49:29 · 1286 阅读 · 1 评论 -
数据结构学习笔记(5)——树与二叉树
树的基本概念结点:结点不仅包含数据元素,而且包含指向子树的指针结点的度:结点拥有的子树个数或者分支的个数。树的度:树中各结点度的最大值。叶子结点:又叫作终端结点,指度为0的结点孩子:结点的子树的根结点。双亲:与孩子的定义相对应。A是B的孩子,那么B就是A的双亲。兄弟:同一 个双亲的孩子之间互为兄弟。祖先:从根到某结点的路径上的所有结点,都是这个结点的祖先。树的高度(或者深度):树中结点的最大层次。结点的深度:从根结点到该结点的路径上的结点个数。结点的高度:从某结点往下走可能到达多个叶原创 2021-07-21 20:35:57 · 1310 阅读 · 0 评论 -
数据结构学习笔记(4)——数组、矩阵与广义表
数组二维数组是元素为一元数组的一维数组。数组一般采取顺序存储,最常见的两种操作是查找与修改。二维数组元素的位置计算问题:假设有二维数组a[m][n],数组从a[0][0]开始存储,问a[i][j]是数组中第几个元素?分析:m表示a的行数,n表示a的列数,且每行有n个元素,每列有m个元素。a[i][j]表示的是数组a中第i+1行第j+1个元素,那么:行优先:a[i][j]前面有i行,那么a[i][j]前面就有i*n+j个元素,则a[i][j]就是第i*n+j+1个元素列优先:a[i原创 2021-07-09 22:42:46 · 1250 阅读 · 4 评论 -
数据结构学习笔记(3)——串
串数据类型的定义串的定义串是由0个或多个字符组成的有限序列。串中字符的个数称为串的长度,0个字符的串称为空串。串中任意连续的字符组成的子序列称为子串,包含子串的串称为主串。串是一种限定元素为字符的线性表。串与线性表最大的区别是操作集不同,线性表主要是针对某一元素操作,而串则主要针对子串操作。串的存储结构定长顺序存储表示typedef struct Str{ char str[maxSize+1]; //maxSize为已定义的常量,表示串的最大长度。+1是以为多出一个结束标原创 2021-07-07 21:01:11 · 932 阅读 · 1 评论 -
数据结构学习笔记(2)——栈与队列
栈与队列结构体定义顺序栈定义typedef struct{ int data[maxSize]; int top;}SqStack;链栈结点定义typedef struct LNode{ int data; struct LNode *next;}LNode;顺序队列定义typedef struct{ int data[maxSize]; int front; int rear;}SqQueue;链队定义[原创 2021-07-03 20:47:09 · 448 阅读 · 2 评论 -
数据结构学习笔记(1)——线性表
线性表的结构体定义与基本操作线性表的结构体定义顺序表的结构体定义一个顺序表中包含一个存储表中元素的数组data[]和一个指示元素个数的变量length:#define maxSize 100typedef struct{ int data[maxSize]; // 默认int型,可换 int legth;}Sqlist;简单写法:int A[maxSize]int n;单链表的结点定义typedef struct LNode{ int data; //数据域 st原创 2021-06-25 00:51:02 · 423 阅读 · 3 评论 -
数据结构与算法(一)——经典而优雅的排序算法
文章目录游戏规则十大排序排序算法的模板简单选择排序游戏规则我们关注的主要对象是重新排列数组元素的排序算法,数组中的每一个元素都有一个主键。排序算法的目的是将所有元素的主键按照某种方式排列(通常是按照大小或者字母顺序)。排序按照过程中使用的存储器不同分为内部排序和外部排序。内排序:指在排序期间数据对象全部存放在内存的排序。外排序:指在排序期间全部对象个数太多,不能同时存放在内存,必须根...原创 2019-07-27 00:56:33 · 856 阅读 · 0 评论 -
时间复杂度与空间复杂度
时间复杂度算法的时间量度一个算法是由控制结构(顺序,分支,循环)和原操作(固有数据类型的操作)构成的。算法时间取决于二者的综合效果。为了便于比较同一问题的不同算法,通常将作为问题中基本操作的源操作重复执行的次数作为算法的时间量度。时间复杂度一般情况下,算法中基本操作重复执行的次数是问题规模nnn的某个函数f(n)f(n)f(n),那么算法上的时间量度TTT记作T(n)=O(f(...原创 2019-06-21 15:53:54 · 216 阅读 · 0 评论 -
读书笔记_《算法》——Chapter1Section1.1 练习题汇总
1.1.1 给出以下表达式的值:a.( 0 + 15 ) / 2b.2.0e-6 * 100000000.1c.true && false || true && true原创 2019-04-25 10:04:28 · 466 阅读 · 0 评论