自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

原创 设置哨兵的顺序查找,二分查找,二叉平衡树,二叉排序树

查找的基本概念列表:由同一类型的数据元素组成的集合。关键码:数据元素中的某个数据项,可以标识列表中的一个或一组数据元素。键值:关键码的值。主关键码:可以唯一地标识一个记录的关键码。次关键码:不能唯一地标识一个记录的关键码。静态查找 :不涉及插入和删除操作的查找 。动态查找 :涉及插入和删除操作的查找。普通的顺序查找基本思想:从线性表的一端向另一端逐个将关键码与给定值进行比较,若...

2019-12-19 17:17:02 1018

原创 xml新手学习

ml是可以根据自己的需求定义自己的标签;解析xml方法:dom,dom4,sax;dom4j导包;SAXReader : 读取xml文件到Document树结构文件对象;Docunment:是一个xml文档对象树;Element : 元素节点,通过Document对象可以查找到单个元素;解析步骤;//创建解析器SaxReader reader= new SAXReader();//读取配置文件,生产村官一个Docunment【org.domj4】对象树Docunment d=read

2020-05-31 21:00:12 184

原创 递归算法

**递归算法**程序直接或间接调用自身的编程技巧称为递归算法(Recursion)。一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当...

2020-04-02 15:52:53 422

原创 递推算法

什么是递推算法?递推法是一种重要的数学方法,在数学的各个领域中都有广泛的运用,也是计算机用于数值计算的一个重要算法。这种算法特点是:一个问题的求解需一系列的计算,在已知条件和所求问题之间总存在着某种相互联系的关系,在计算时如果可以找到前后过程之间的数量关系(即递推式),那么,从问题出发逐步推到已知条件,此种方法叫逆推。无论顺推还是逆推,其关键是要找到递推式。这种处理问题的方法能使复杂运算化为若干...

2020-04-02 14:51:35 1036

原创 查找

在排序问题中,通常将数据元素称为记录排序的基本概念。正序:待排序序列中的记录已按关键码排好序。逆序(反序):待排序序列中记录的排列顺序与排好序的顺序正好相反。趟:在排序过程中,将待排序的记录序列扫描一遍称为一趟。通常,一次排序过程需要进行多趟扫描才能完成。排序算法的存储结构从操作角度看,排序是线性结构的一种操作,待排序记录可以用顺序存储结构或链接存储结构存储。插入类排序插入排序的主要操作是...

2019-12-24 19:21:35 133

原创 B树,hash查找技术

B- 树m阶B-树:是满足下列特性的树:(1) 树中每个结点至多有m棵子树;(2) 若根结点不是终端结点,则至少有两棵子树;(3) 除根结点外,其他非终端结点至少有 m/2 棵子树;(4)所有非终端结点都包含以下数据:(n,A0,K1,A1,K2,…,Kn,An)其中,n(m/2 1≤n≤m 1)为关键码的个数;Ki(1≤i≤n)为关键码,且Ki<Ki+1(1≤i≤n-1);A...

2019-12-19 17:38:55 125

原创 AOE,AOV,拓扑排序,关键路径

AOV网AOV网:在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,称这样的有向图为顶点表示活动的网,简称AOV网。1.AOV网中的弧表示活动之间存在的某种制约关系。2.AOV网中不能出现回路 。AOE网AOE网: 在一个表示工程的带权有向图中, 用顶点表示事件, 用有向边表示活动, 边上的权值表示活动的持续时间(基于AOV多加的一点), 称这样的有向图叫做边表示活动...

2019-12-01 21:36:40 619

原创 dijkstra和floyd

dijstra和floyd最短路径对于网图来说,最短路径,是指两顶点之间经过的边上权值之和最少的路径,并且我们称路径上的第一个顶点是源点,最后一个顶点是终点。关于最短路径主要有两种算法,迪杰斯特拉(dijkstra) 算法和弗洛伊德(floyd) 算法。dijkstra算法将间隔一个(或多个)顶点的远距离路径问题转化为一步步求出它们之间顶点的最短路径问题,过程中都是基于已经求出的最短路径的基础...

2019-12-01 21:28:47 1399

原创 线索二叉树

线索二叉树线索链表线索:将二叉链表中的空指针域指向前驱结点和后继结点的指针被称为线索;线索化:使二叉链表中结点的空链域存放其前驱或后继信息的过程称为线索化;线索二叉树:加上线索的二叉树称为线索二叉树。结点结构:ltag data child rtagltag={0: lchild指向该结点的左孩子1: lchild指向该结点的前驱结点}rtag={0: rch...

2019-12-01 21:03:17 91

原创 prim和kruskal

求最小生成树prim时间复杂度为O(n^2)假设N= (P,{E}) 是连通网,TE 是N 上最小生成树中边的集合。算法从U={u0}(u0∈V), TE={ }开始。重复执行下述操作:在所有u∈U,v∈V-U的边(u,v)∈E 中找一代价最小的边(u0,v0) 并入集合TE,同时v0并入U,直至U=V为止。 此时TE中必有n-1条边,则T= (V,{TE}) 为N的最小生成树。void...

2019-12-01 20:33:48 145

原创

图图(Graph)是一种数据类型。主要包含顶点(Vertex)和边(Edge)。图G(V, E)是由一个非空有限顶点集合V和有限边集合E组成。本篇文章主要是对图的基础知识做一个学习总结。具体内容包括图的存储方式,图的连通性和无权图的遍历和寻路。图的存储方式图一般通过邻接矩阵或邻接表的方式存储。邻接矩阵顾名思义是将顶点间的连通关系存放到矩阵中,无权图即可表示为1连通0不连通。邻接表则是...

2019-12-01 20:00:13 122

原创 霍夫曼树

霍夫曼树是二叉树的一种特殊形式,又称为最优二叉树,其主要作用在于数据压缩和编码长度的优化。路径和路径长度在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。结点的权及带权路径长度若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权。结点的带权路径长度为:从根结点到...

2019-12-01 19:22:26 389

原创 二叉树

树树(Tree)是n(n>=0)个结点的有限集结点拥有的子树数目称为结点的度。结点子树的根结点为该结点的孩子结点。相应该结点称为孩子结点的双亲结点。同一个双亲结点的孩子结点之间互称兄弟结点。从根开始定义起,根为第一层,根的孩子为第二层,以此类推。树中结点的最大层次数称为树的深度或高度。二叉树二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由...

2019-12-01 19:11:10 145

原创 字符串和字符数组

字符串的定义:字符串是零个或多个组成的有限序列,只包含空格的串成为空格串。串中所包含的字符个数成为串的长度,长度为0的串为空串,记作“”,字符串中任意个连续的字符组成的子序列称为该串的子串,相应地,包含子串的串称为主串,子串的第一个字符在主串的序号成为子串在主串的位置。字符串的比较当下列条件之一成立时,称X>Y。(1)n<m,且x1<y1,(i=1,2…,n);(2)存...

2019-10-27 17:03:21 242

原创 栈和队列学习

栈的定义:栈是限定只在表尾进行插入和删除操作的线性表。理解栈的定义的注意点:(1)首先它是一个线性表,栈元素具有线性关系,即前驱后继关系。(2)它的特殊之处在于限制了这个线性表的插入和删除位置,它始终只在栈顶进行。(3)栈的插入操作,叫做进栈。(4)栈的删除操作,叫做出栈。栈和普通线性表的不同点:栈是特殊的线性表,是只允许在一端进行插入和删除操作的线性表。允许插入和删除的叫栈顶,反...

2019-10-27 10:38:59 366

原创 单链表

大二的第一个周 ,我们学习了单链表。学习中我的第一个疑惑就是为什么单链表需要头节点呢?如果有头节点删除操作与添加操作代码都为一致的p->next=fist->next;first->next=p;p->next=p->next->next如果没有 首先每次删除添加第一位元素都要移动first 这样我们就要多写一个if来进行判断,所以不如头节点来得方...

2019-09-22 19:48:48 102

原创 Mysql 8.0 基本

create table[if not exists] table1(col1 int,col2 varchar(30),col3 double(3,2));show databases;use table1;show table from 数据库名称;show columns from table1;insert [into] table1 values(1,‘1’,0.0...

2019-07-30 17:04:43 88

原创 面向对象程序设计心得

面向对象程序设计心得其实我认为一句话便可以描述出很多,那就是代码是滚雪球一步一步滚出来的,而不是应该与之相反的。这句话让我感触很深的地方时当时做的一个搜索,因为大多复制,黏贴,所以并没有进行全部的检验,只是对其中两个典型的搜索姓名和学号进行了检查,再后来,曾经用到了返回值,发现有使对边界处理不正确,于是开始一步一步进行向上查,因为对于搜索太过于放心,所以第一次没有发现,最后才知道是因为复制名字...

2019-06-17 11:52:48 2795

原创 c++面向对象程序设计学习总结

C++面向对象程序设计已经告别一段段落,下面我将结合老师所交给我们的知识和课本内容进行一次复习总结。首先是运算符重载,其中必须是成员函数得的有=,[],->,->*,一元运算符和符合赋值运算符最好是成员函数。其他二元函数和输入输出运算符可以设为非成员函数。在使用运算符时应该善用const,防止对象的值遭到修改。下面写一下主要的几个重载运算符的声明:friend istream&a...

2019-06-17 11:51:31 1197

原创 图论算法

我们把点分为两类,一类是已确定最短路径的点,称为“白点”,另一类是未确定最短路径的点,称为“蓝点”。如果我们要求出一个点的最短路径,就是把这个点由蓝点变为白点。从起点到蓝点的最短路径上的中转点在这个时刻只能是白点。Dijkstra的算法思想,就是一开始将起点到起点的距离标记为0,而后进行n次循环,每次找出一个到起点距离dis[u]最短的点u,将它从蓝点变为白点。随后枚举所有的蓝点vi,如果以此白...

2019-05-25 22:47:25 130

原创

堆结构是一种数组对象,它可以被视为一棵完全二叉树。树中每个结点与数组中存放该结点中值的那个元素相对应。 设数组A的长度为len,二叉树的结点个数为size,size≤len,则A[i]存储二叉树中编号为i的结点值(1≤i≤size),而A[size]以后的元素并不属于相应的堆,树的根为A[1],并且利用完全二叉树的性质,我们很容易求第i个结点的父结点(parent(i))...

2019-05-22 23:36:06 87

原创 图的遍历

深度优先与广度优先遍历  从图中某一顶点出发系统地访问图中所有顶点,使每个顶点恰好被访问一次,这种运算操作被称为图的遍历。为了避免重复访问某个顶点,可以设一个标志数组visited[i],未访问时值为false,访问一次后就改为true。  图的遍历分为深度优先遍历和广度优先遍历两种方法,两者的时间效率都是O(n*n)。  深度优先遍历与深搜DFS相似,从一个点A出发,将这个点标为已访问vi...

2019-05-18 22:39:42 89

原创 图论算法

首先,图是一种数据结构,定义graph=(V,E)。V是一个非空有限集合,代表顶点(结点),E代表边的集合。二、图的一些定义和概念(a)有向图:图的边有方向,只能按箭头方向从一点到另一点。(b)无向图:图的边没有方向,可以双向。结点的度:无向图中与结点相连的边的数目,称为结点的度。结点的入度:在有向图中,以这个结点为终点的有向边的数目。结点的出度:在有向图中,以这个结点为起点的有向边的...

2019-05-15 22:21:42 264

原创 二叉树建立及插入节点

建立一棵二叉树、插入一个结点到二叉树中、删除结点或子树等。1、建立一棵二叉树void pre_crt(tree &bt) //按先序次序输入二叉树中结点的值,生成{char ch;ch = getchar(); //二叉树的单链表存储结构,bt为指向根结点的指针,’′表示空树if(ch!=′&#x27;表示空树 if(ch != &#x27;′表示空树...

2019-05-11 22:41:10 5729 1

原创 树的遍历

树的遍历有三种方法 先序(根)遍历:先访问根结点,再从左到右按照先序思想遍历各棵子树。后序(根)遍历:先从左到右遍历各棵子树,再访问根结点。{if(bt){postorder(bt->lchild);postorder(bt->rchild);cout << bt->data;}}层次遍历:按层次从小到大逐个访问,同一层次按照从左到右的次序。...

2019-05-08 22:57:26 441

原创 R语言

mean()求算术平均值函数c()以向量的形式输入数据sd()标准差cor()线性关系plot(age,weight)

2019-05-08 17:32:37 518

原创 二叉树

一个结点的子树个数,称为这个结点的度;度为0的结点称为叶结点;度不为0的结点称为分支结点;根以外的分支结点又称为内部结点;树中各结点的度的最大值称为这棵树的度。在用图形表示的树型结构中,对两个用线段(称为树枝)连接的相关联的结点,称上端结点为下端结点的父结点,称下端结点为上端结点的子结点。称同一个父结点的多个子结点为兄弟结点。称从根结点到某个子结点所经过的所有结点为这个子结点的祖先。称以某个结点...

2019-05-04 22:59:43 125

原创 单调数列

单调队列:队列中元素之间的关系具有单调性,而且,队首和队尾都可以进行出队操作,只有队尾可以进行入队操作。若新元素从队尾插入后会破坏单调性,则删除队尾元素,直到插入后不再破坏单调性为止,再将其插入单调队列。也就是说若果按照5 4 3 2 1来插入数列最后只会剩下1若按照1 2 3 4 5最后单调数列会是1 2 3 4 5,我们可以通过单调数列轻松的获得极值。...

2019-05-01 20:56:22 312

原创 状态压缩

当我们搜索时若遇到内存不够用可以尝试尝试状态压缩,状态压缩可以解决内存不够用和状态难以表达。& 按位与,可以将某个数的某二进制位置为0,也可以用于取出某个二进制位| 按位或,可以将某个数的某二进制位置为1~ 非,将一个数的所有二进制位取反^ 异或,相同为0,不同为1...

2019-04-27 21:59:32 999

原创 二分算法

先给出二分查找函数int HalfSearch(int a[],int low,int high,int key){int mid;while(low<=high){mid=(low+high)/2;//二分点if(a[mid]==key) return mid;else if(a[mid]<key) low=mid+1;else high=mid-1;}retur...

2019-04-24 21:55:35 84

原创 递归再学习

递归需要重复运行一块结构体,在这循环之中,寻找满足条件的点。也就是说给代码块一个功能,通过代码自动运行,来计算结果。但是我们这样做是常常会超时。因为递归需要记算所有的节点值并储存。这是我们便需要考虑,是否是因为终止条件是否错误。否则考虑是不是要去除一些不必要的伸支。然后再考虑是不是需要存储结果。这在某一些地方很难实现。并且递归是深搜与dp都可以使用的,我认为其实这两个密不可分,有些题目即可以用d...

2019-04-20 21:14:42 80

原创 广度优先搜索

广度优先搜索思想是:顶点出发,在访问了顶点之后依次访问顶点的各个未曾访问过的子节点,出发依次访问子节点的的子节点,先被访问的顶点的子节点先于后被访问的顶点的子节点被访问,直至图中所有已被访问的顶点的子节点都被访问到。如果此时图中尚有顶点未被访问,则需要另选一个未曾被访问过的顶点作为新的起始点,重复上述过程,直至图中所有顶点都被访问到为止。用到了“先进先出”队列,通过这个队列来存储第一次发现的节点,...

2019-04-17 22:28:29 210

原创 Class

类是对具有相同属性和行为的一组对象的抽象,对象是数据和操作的封装体。类中包含数据成员和数据函数,可以为其设置不同的访问权限,public,private,protected,,数据函数可以包括析构函数和构造函数,构造函数在对象定义时自动调用,一般至少要定义两个构造函数,析构函数在函数结束时自动调用,可以写对对象的最后一个操作。他们两个都没有返回值,并且名字都与类的名字相同,但是析构函数前有~。友元...

2019-04-13 22:14:38 290

原创 深度优先搜索

基本思想:从初始状态,利用规则生成搜索树下一层任一个结点,检查是否出现目标状态,若未出现,以此状态利用规则生成再下一层任一个结点,再检查,重复过程一直到叶节点(即不能再生成新状态节点),当它仍不是目标状态时,回溯到上一层结果,取另一可能扩展搜索的分支。采用相同办法一直进行下去,直到找到目标状态为止。所以深度优先搜索是遍历完某一状态的所有子状态后才对同一层的状态进行搜索,而广度优先搜索是现对一层进...

2019-04-13 21:52:25 136

原创 递归函数

递归函数通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小规模的问题。递归需要有边界条件(个人认为写在递归函数的最前)。当边界条件不满足时,递归继续,当边界条件满足时,递归返回。 所以递归即是一层又一层的深入,然后达到了边界值,就会一层一层的返回。列如我们上一次期末考试的分钱题目 可以用一个递归函数解决。F(n)=F(n-5)+F(n-3)+F(n-2);再加上最后的边界值限制,便...

2019-04-10 22:58:10 469

原创 区间dp二

所谓区间dp,就是在一个区间上进行的dp, 一般通过将大区间分割成小区间进行dp。区间型动态规划,又称为合并类动态规划,是线性动态规划的扩展,它在分阶段地划分问题时,与阶段中元素出现的顺序和由前一阶段的区间中哪些元素合并而来有很大的关系。区间动归状态转移方程及一般动规过程:for k:=1 to n-1 do //区间长度 for i:=1 to n-k do //区间起点 ...

2019-04-10 22:26:53 65

原创 区间dp

什么是区间dp?区间dp就是在区间上去做动态规划。他依旧满足最优化原理和无后效性原则,求解一小段的最优解,然后将一个大区间由长度不等的小区间合并起来。而我认为它最主要的特点是状态方程由枚举分界点实现转移。...

2019-04-07 10:23:42 55

原创 01背包

背包问题可以简化为一个动态方程,dp[i][v]=max{dp[i-1][v],dp[i-1][v-c[i]]+w[i]}果放第i件物品,那么问题就转化为“前i-1件物品放入剩下的容量为v-c[i]的背包中”,此时能获得的最大价值就是dp[i-1][v-c[i]]再加上通过放入第i件物品获得的价值w[i]。但是二维数组容易爆内存,所以降成一维:for i=1…Nfor v=V…0dp[v]...

2019-04-03 22:59:20 79

原创 ACM动态规划学习心得

dp递推边界值判断放在递推前;

2019-03-30 10:41:57 184

原创 ACm动态规划二

经过上ACm课,我对动态规划有了更深刻的印象,动态规划是一个问题的求解过程可以分为若干个互相联系的阶段,每个阶段决策会影响到下一个阶段的决策。也就是要在可以选择的那些策略中间,选取一个最优策略。其中在做每一步决策时,列出各种可能的局部解。将不能是最优解的删去,最后只剩最优解。(或者说是将不是最优解淘汰)。并且dp的关键是怎么删,怎么选,可以讲每一阶段的最优解问题可以递归地归结为下一阶段各个可能...

2019-03-27 22:20:21 126

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除