数据结构与算法
文章平均质量分 91
个人学习笔记
qwjy
这个作者很懒,什么都没留下…
展开
-
时间复杂度与空间复杂度
文章目录时间复杂度 时间复杂度算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好地反映出算法的优劣与否;算法执行时间需要依据该算法编制的程序在计算机上执行运行时消耗的时间来度量,度量方法有两种。事后统计方法和事前分析估算方法,因为事后统计方法更多的依赖计算机的硬件,软件等环境元素,有时容易掩盖算法本身的优劣。因此常常采用事前分析估算的方法。一个算法是由控制结构(顺序、分支、循环)和原操作(固有数据类型的操作)构成的,而算法原创 2021-12-31 13:43:26 · 505 阅读 · 0 评论 -
线性表_数据结构
文章目录线性表的类型定义例题线性表的顺序表现 线性结构特点: 在数据元素的非空有限集中:存在惟一的一个被称做“第一个”的数据元素;存在惟一的一个被称做“最后一个”的数据元素‘除第一个之外,集合中的每个数据元素均只有一个前驱;除最后一个之外,集合中每个数据元素均只有一个后继。 线性表的类型定义 线性表(linear_list) 是最常见且最简单的一种数据结构。线性表:由同类型数据元素构成有序序列的线性结构表中元素个数称为线性表原创 2021-09-04 10:59:07 · 1393 阅读 · 0 评论 -
约瑟夫环问题及例题
文章目录一、问题描述二、问题分析三、代码1、暴力2、递归 一、问题描述约瑟夫环: 据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而.Josephus和他的朋友并不想遵从。首先从一个人开始,越过k-原创 2021-07-07 10:33:48 · 1688 阅读 · 0 评论 -
一元稀疏多项式计算
文章目录一、基本概念二、问题描述三、多项式存储四 一、基本概念 设 a0,a1,…,an都是数域 F 中的数, n 是非负整数,那么表达式anxn +an-1xn-1+…+a2x2 +a1x1+ a0x0(an≠0) 叫做数域 F上一个文字 x 的多项式或一元多项式。 在多项式中,a0叫做零次多项式或常数项,a1x 叫做一次项,一般,aix 叫做i次项,ai 叫做 i 次项的系数。一元多项式用符号 f(x),g(x),…来表示。 一元稀疏多项式: 在一元原创 2021-08-03 18:33:23 · 5470 阅读 · 2 评论 -
数组、特殊矩阵、稀疏矩阵、广义表
文章目录一、数组基本知识存储方式及地址计算一维数组 一、数组基本知识 数组(array)是具有相同类型的数据的集合,也就是说数组的所有元素的类型都是相同的,在所有的数据结构中,数组算是最常见也是最简单的一种数据结构,我们最常见的也就是一维数组,当然还有二维,三维……,数组需要先声明才能使用,数组的大小一旦确定就不可以在变了。 数组中的每个数据元素都对应于一组下标(j1,j2,…,jn),每个下标的取值范围是0 <= ji <= bi-1,bi称原创 2021-08-10 22:23:57 · 1805 阅读 · 1 评论 -
数组的查找
文章目录一、线性查找简介解析代码总结二、二分查找简介解析总结代码例题三、总结 一、线性查找简介 线性查找是一种在数组中查找数据的算法。与二分查找不同(下面讲解),即便数据没有按顺序存储,也可以应用线性查找,线性查找的操作很简单,只要在数组中从头开始依次往下查找即可。 顺序查找算法是最简单的查找算法,其意思为:线性的从一个端点开始,将所有的数据依次访问,并求得所需要查找到的数据的位置,因此,线性查找可以称呼为遍历。 解析 开原创 2021-07-12 20:45:38 · 3331 阅读 · 1 评论 -
栈的应用(数制转换、括号匹配检验、迷宫求解、表达式求值、背包问题)
文章目录一、数制转换例题二、括号匹配检验 栈的性质是后进先出。 一、数制转换 十进制数N转其他d进制的转换原理:N = (N div d) × d + N mod d(其中:div 为整除运算,mod为求取余运算) 例如:(1348)10=(2504)8,运算过程如下表:NN div 8N mod 8134816841682102125202 上述计算过程是从低位到高位顺序产原创 2021-08-07 12:09:52 · 1087 阅读 · 0 评论 -
八皇后问题
文章目录八皇后问题例题例题一例题二 八皇后问题问题表述: 在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。如果经过±90度、±180度旋转,和对角线对称变换的摆法看成一类,共有42类。总结:在 n × n 格的棋盘上放置 n 个皇后,任何 2 个皇后不放在 同一行 或原创 2021-08-20 20:14:48 · 603 阅读 · 0 评论 -
KMP算法解析
文章目录一、暴力匹配二、KMP匹配算法1、KMP算法简介2、KMP算法过程3、KMP算法详解4、next()数组构建代码5、KMP匹配算法代码三、例题1、第一题 一、暴力匹配暴力匹配顾名思义就是强行匹配,不含任何算法,直接搜索。时间复杂度: O(nm):n为被搜索字符串长度,m为匹配字符串长度。 算法思路: 暴力搜索算法由文本串中从O到n-m所有位置的比较组成,无论是否从模式串的起始位置开始,每次匹香过后,模式串向右移动一位。暴力搜索算法没有预处理阶段,文本原创 2021-07-05 21:53:35 · 567 阅读 · 0 评论 -
二叉树的基本概念及性质
文章目录一、基本概念二、二叉树的种类二叉树满二叉树完全二叉树二叉搜索树平衡二叉搜索树三、二叉树的性质性质一性质二 一、基本概念 树是 n 个结点的有限集。在任意一颗非空树中:(1)有且仅有一个特定的称为根的结点;(2)当 n>1 时,其余结点可分为 m (m>0) 个互不相交的有限集T1,T2,…,Tm,其中每个集合本身又是一颗树,并且称为根的子树。 例如,上图中(a)是只有一个根结点的树;(b)是有13个结点的树,其中 A 是根,原创 2021-08-12 21:07:17 · 1166 阅读 · 1 评论 -
二叉树的遍历
文章目录二叉树的存储结构顺序存储结构链式存储结构遍历二叉树二叉树建立先序建树中序建树后序建树递归算法先序遍历(中左右)中序遍历(左中右)后序遍历(左右中)非递归算法先序遍历(中左右)中序遍历(左中右)后序遍历(左右中) 二叉树的存储结构顺序存储结构 按照顺序存储结构的定义,在此约定,用一组地址连续的存储单元依次自上而下、自左至右存储完全二叉树上的结点元素,即将完全二叉树上编号为 i 的结点元素存储在定义的一维数组中下标为 i-1 的分量中。 原创 2021-08-16 22:28:26 · 995 阅读 · 0 评论 -
二叉树的其他经典算法
文章目录广义表形式建树递归非递归求以元素为x的节点为根的子树深度判断两个二叉树是否相等交换左右子树计算叶子节点的个数计算双分支节点个数计算节点个数计算单分支节点个数二叉树的高度 广义表形式建树递归void CreateBiTree1(BiTree &T){//创建二叉树链表(递归) if(*s == '#'){//结束建树 return; } else if(*s == '('){//遇左括号 s++; if(*s == ',原创 2021-12-28 23:04:21 · 641 阅读 · 1 评论 -
线索二叉树
文章目录线索二叉树二叉树线索化线索二叉树遍历 线索二叉树 规定:若结点有左子树,则其 lchild 域指示其左孩子,否则令 lchild 域指示其前驱;若结点有右子树,则其 rchild 域指示其右孩子,否则令 rchild 域指示其后继。为了避免混淆,尚需改变结点结构,增加两个标志域:其中: 以这种结点结构构成的二叉链表作为二叉树的存储结构,叫做线索链表,其中指向结点前驱和后继的指针,叫做线索。加上线索的二叉树称之为线索二叉树。 对二叉树原创 2021-08-17 20:53:01 · 205 阅读 · 0 评论 -
树和森林*
文章目录树的存储结构双亲表示法孩子表示法孩子兄弟表示法森林与二叉树的转换森林转换成二叉树二叉树转换成森林树和森林的遍历树森林 树的存储结构双亲表示法 一组连续空间存储树的结点,同时在每个结点中附设一个指示器指示其双亲结点在链表中的位置。//------树的双亲表存储表示------#define MAX_TREE_SIZE 100typedef struct PTNode{//结点结构 TElemType data; int parent;/原创 2022-01-16 21:47:32 · 224 阅读 · 0 评论 -
哈夫曼树--数据结构
文章目录哈夫曼树 哈夫曼树原创 2021-08-19 17:13:12 · 7999 阅读 · 0 评论 -
图的术语及常用存储方式
文章目录图的术语 图的术语原创 2021-08-22 13:56:55 · 343 阅读 · 0 评论 -
深度优先搜索(DFS)和广度优先搜索(BFS)
文章目录一、广度优先搜索(BFS)1.简介 一、广度优先搜索(BFS)1.简介原创 2021-08-01 11:53:50 · 2974 阅读 · 0 评论 -
最小生成树
文章目录原创 2021-08-27 16:57:26 · 384 阅读 · 0 评论 -
拓扑排序、关键路径
文章目录拓扑排序 拓扑排序原创 2021-08-29 11:32:38 · 2739 阅读 · 0 评论 -
最短路径问题
文章目录原创 2021-08-30 13:53:27 · 390 阅读 · 0 评论 -
二叉排序树
文章目录原创 2021-08-23 21:05:47 · 2959 阅读 · 1 评论 -
平衡二叉树*
文章目录平衡二叉树AVL 树的旋转 平衡二叉树 平衡二叉树(Balanced Binary Tree)又被称为 AVL 树。 定义:一棵 AVL 树是一棵二叉查找树,其中每个节点的平衡因子(定义为该节点左子树和右子树的高度差),这个平衡因子要么为 0,要么为 +1 或者 -1 (一棵空树的高度定义为 -1,当然平衡因子也可以被定义为左右子树的叶子数的差而不是高度差)。 AVL 树的旋转...原创 2022-01-24 01:00:00 · 843 阅读 · 0 评论 -
红黑树**
文章目录原创 2022-01-30 23:00:00 · 769 阅读 · 0 评论 -
并查集**
文章目录原创 2022-02-06 23:30:00 · 486 阅读 · 0 评论 -
B-树、B+树、键树
文章目录B-树B-树B-树查找查找分析B-树的插入B-树删除B+树 B-树B-树 B-树是一种平衡的多路查找树。一棵 m 阶的 B-树,或为空树,或为满足下列特性的 m 叉树:(1)树中每个结点至少有 m 棵子树;(2)若根结点不是叶子结点,则至少有两棵子树;(3)除根之外的所有非终端结点至少有⌈m/2⌉棵子树;(4)所有的非终端结点中包含下列信息数据 (n, A0, K1, A1, K2, A2, … , Kn, An)原创 2021-08-26 19:03:03 · 882 阅读 · 1 评论 -
哈希表!!
文章目录哈希表哈希函数的构造方法直接定址法数字分析法平方取中法折叠法除留余数法随机数法选取哈希函数因素处理冲突的方法开放定址法再哈希法链地址法建立一个公共溢出区哈希表的查找及其分析 哈希表 根据设定的哈希函数 H(key) 和处理冲突的方法将一组关键字映像到一个有限的连续的地址集(区间)上,并以关键字在地址集中的“像”作为记录在表中的存储位置,这种表便称为哈希表,这一映像称为哈希造表或散列,所得存储位置称哈希地址或散列地址。若关键字为 key,则其值存原创 2021-08-24 23:03:53 · 564 阅读 · 0 评论 -
常见排序算法
文章目录一、什么是排序二、冒泡排序 一、什么是排序 排序就是将输入的数字按照从小到大的顺序进行排序。这里我们用柱形来表示数字,数字越大,柱形就越高。 假设现在有如上图所示的输入数据,那么我们的目标就是将它们像下图一样,按从小到大的顺序从左边开始依次排列。 如果只有8个数据,手动排序也能轻松完成,但如果有10000个、1000000个数据,排序就不那么容易了。这时,使用高效率的排序算法便是解决问题的关键。这就涉及到排序算法设计与使用了。 排序算法可原创 2021-07-11 14:51:52 · 528 阅读 · 4 评论 -
NCHU软件学院--数据结构考研试题
文章目录2018年应用题算法设计题 2018年应用题B = (K, R)K = {A, B, C, D, E, F}R = {<A, B>, <A, C>, <B, D>, <C, E>, <C, F>} (2)L = (1+1+1+1+2+2+4+1+2+2)/10原创 2021-09-10 08:03:21 · 1026 阅读 · 1 评论 -
NCHU-数据结构复习题
文章目录时间复杂度 时间复杂度下面程序的时间复杂度是 ------ O(m*n)for(i=0;i<m;i++) for(j=0;j<n;j++) a[i][j] = 0;下面程序的时间复杂度是 ------ O(n)s = 1;for(i=1;i<n;i++) s = s * i;下面程序的时间复杂度是 ------ O(n2)s = 0;for(i=0;i<n;i++) for(j=0;j&原创 2021-09-16 22:33:11 · 780 阅读 · 0 评论 -
素数(埃式筛法、线性筛法)
文章目录素数判断方法埃式筛法线性筛法区间筛法 素数判断方法最简单的就是从 2 ~ n-1 都去与 n 取余,看是否能整除。bool prime(int n){ for(int i = 2; i < n; i ++) if(n % i == 0) return true; return false;}思考一下:其实没有必要枚举所有的比 n 小的数,n % i == 0,那么必定有一个 j 使得 i * j = n。所以只需要枚举 i原创 2022-05-22 23:00:00 · 775 阅读 · 0 评论 -
杨辉三角形详解
文章目录杨辉三角形 杨辉三角形前提:每行端点与结尾的数为1。原创 2022-05-29 23:00:00 · 31922 阅读 · 5 评论 -
二分查找
文章目录二分查找二分查找模板题目分巧克力M 次方根 二分查找 二分查找也就是折半查找。折半查找是将 N 个元素分成大致相同的两部分。选取中间元素与查找的的元素比较,或者与查找条件相比较,找到或者说找到下一次查找的半区。每次都将范围缩小至 1/2 所以时间复杂度是 O(log2n),但是二分查找的前提是有序的,一般是从小到排列。 折半查找的基本思想:在有序表中(low, high, low<=high),取中间记录即 [(原创 2022-06-05 23:00:00 · 261 阅读 · 0 评论