E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
算法导论-CLRS
算法导论
最长公共子序列(按自己思路写的)
#include#include#includeintgetlastPos(char*s,charc,intpos){intlen=strlen(s),i;for(i=pos-1;i>=0;i--){if(c==s[i])returni;}returni;}int**initM(char*x,char*y){intxlen=strlen(x);intylen=strlen(y);inti,j;//
万万岁
·
2020-08-23 17:18
算法导论
算法导论
:c++实现红黑树
数据结构性质这里定义一个结构体保存颜色enumcolorRB{black=0,red,};structTreeNode_RB{intval;colorRBcolor;TreeNode_RB*left;TreeNode_RB*right;TreeNode_RB*parent;TreeNode_RB(intx,colorRBc):val(x),left(NULL),right(NULL),parent
Imcy
·
2020-08-23 12:53
C++
算法导论
算法导论
:c++实现图
图的表示这里用结构体来表示图G,和图顶点GraphNode,后面要用到的顶点颜色用枚举类型表示enumcolor{white=0,gray,black};structgraphNode{charname;//顶点名structgraphNode*pre;//前驱节点intd;//深度colorc;//节点颜色graphNode(charn):name(n),pre(NULL),c(white),d
Imcy
·
2020-08-23 12:53
C++
算法导论
算法导论
:c++选择算法
选择算法即给定数组A,选出第i个大的元素,区别于排序后选择这种比较慢的方法,选择算法不需要排序即可选出第i个大元素基于随机快排选择算法首先实现随机快排:随机快排就是在快排的基础上主元用随机数产生。//随机快速排序之随机选择替代主元intrandom_partition(intarray[],intp,intr){inti=(rand()%(r-p+1))+p;//产生[p,r]之间的一个随机数ii
Imcy
·
2020-08-23 12:22
C++
算法导论
算法导论
-----排序的9种实现(C/C++)
目录A、冒泡排序B、选择排序C、插入排序D、折半插入排序E、归并排序F、快速排序G、希尔排序H、堆排序《
算法导论
》中并没有讨论这么多排序算法。在此罗列出来,仅仅是为了今后便于查看。
GNG
·
2020-08-23 11:36
算法导论
编程提高
《算法导论》笔记
如何有效地理解程序中的递归
写在前面最近在重新学习《
算法导论
》这本书,在看到介绍递归的时候,想起了当时学习算法时的痛苦,递归是一种让人有爱与恨的算法理念,之所以爱是因为其的使用思路很清晰且算法复杂度等接近最优,恨就是因为它的思想太过于抽象了
yourzeromax
·
2020-08-23 11:01
算法
用C++学《
算法导论
》——第一章:算法的认识
笔者简介:一名程序男,就读于某中流985高校计算机专业,目前大四,留研本校,3年编程经验。个人心声:学习编程几年了,但是这不是我一开始就确定道路,刚入学时只是个萌新,做过销售、发过传单、踩过楼层,碰壁多了,也明白自己适合的方向,大二开始才真正踏上编程之路。走过了不少弯路,然后才明白,你的编码能力是和发际线成正比的,嘿嘿嘿。大四了,本来是应该养老的生活(保研),但是自己却一直静不下心来,一时想学这个
晓晶
·
2020-08-23 11:44
用C++学《算法导论》
算法导论
(c++实现)chapter4
算法导论
的第四章——分治策略,主要的算法为寻找最大子数组问题,还有矩阵乘法的Strassen算法,还有一些课后的练习题,主要讲了求解递归式的三种方法:代入法(感觉像是猜测,然后用数学归纳法验证),递归树法
zhutou1280
·
2020-08-23 11:26
算法导论
算法导论
c++实现第一章
实现选择排序排序思想:无序数组序列用A[0...n]描述A中某个位置用pos描述,key=A[pos],算法思想是遍历数组A(从位置1开始),如果有A[pos-1]usingnamespacestd;/*实现思想遍历数组arr[1..n-1],将数据放置到arr[0]开头的数组内,组成的数据组是有序的arr[0]到arr[1]如果可以直接交换,能够实现从大到小的排序号的数组,当数据追加时可以将位置
johnsonchengwu
·
2020-08-23 10:50
学习笔记
2019年个人OKR
在读3本KR2:参加软考,获取架构师证书待办:购买参考教材待办:报名参考考试待办:学习网络/书本教程KR3:了解工程硕士的相关事宜,为2020年准备在读书单:Linux/UNIX系统编程手册(上/下册)
算法导论
chenglimie7017
·
2020-08-23 10:53
算法导论
B树的c++实现
算法导论
的课要完成一个小课题,选了B树,花了挺长时间弄完,之前写了几个简单的排序,发现这递归是真的牛批啊。代码部分参考了这位博主。在写前面的插入那一大块,书上有伪代码可以对着写。
andefine
·
2020-08-23 09:05
c++
【
算法导论
】用C++实现快速排序
本算法为【
算法导论
】7.1的C++实现,代码如下:#includevoidswap(int*a,int*b);intpartition(int*array_list,intleft,intright);
李亚超
·
2020-08-23 09:12
C/C++
重用代码之LinuxC&C++
算法导论
算法导论
快排实现(C++)
算法导论
的快排算法,#includeusingnamespacestd;inta[]={9};voidexchange(int&x,int&y){inttem=x;x=y;y=tem;}intpar(inta
东方花未开
·
2020-08-23 09:25
算法
算法导论
第三十(30)章多项式与快速傅里叶变换
由于在第三十一章数论算法中遇到几个关于超大数乘法的问题促使我需要学这章,具体请看第三十一章练习31.1-8,31.1-12与31.1-13.基本概念:大整数的加减乘除系数形式表示的多项式的快速乘法1.两个n次多项式a与b分别计算在2n次单位复数根下的对应多项式值。计算过程使用的是FFT。所以时间为O(nlgn)2.随后进行点值乘法,根据c(w0)=a(w0)*b(w0)在n次单位复数根下的对应的多
Flammable_ice
·
2020-08-23 08:59
《算法导论》
《
算法导论
》习题解答 Chapter 22.1-5(求平方图)
一、邻接矩阵实现思路:如果是邻接矩阵存储,设邻接矩阵为A,则A*A即为平方图,只需要矩阵相乘即可;伪代码:fori=1tonforj=1tonfork=1tonresult[i][j]+=matrix[i][k]*matrix[k][j];算法复杂度两个n维数组相乘,因此复杂度为O(V^3),当然可以通过Strassen算法稍加改进.扩展:这种方法的作用是比如求u到v路径长度为k的路径数目,只需要
weixin_30300225
·
2020-08-23 07:51
《
算法导论
》第四章-思考题(参考答案)
算法导论
(第三版)参考答案:思考题4.1,思考题4.2,思考题4.3,思考题4.4,思考题4.5,思考题4.6Problem4.1(Recurrenceexamples)GiveasymptoticupperandlowerboundforT
vikYao
·
2020-08-23 07:51
算法导论(第三版)
“学习笔记”之《
算法导论
》----第六部分----图算法----第二十六章----最大流
本人大四即将结束,于2018年12月18日购《
算法导论
》这本书,慢慢看,第一阶段先主要理解各个章节说的算法都是什么意思,书上的课后习题先不做,用得上什么算法我再详细学习。这是官方课后答案的链接。
Mr.Naruto
·
2020-08-23 06:22
算法导论
算法导论
:第15章 动态规划_1_2钢条切割_动态规划的两种解法
/*钢条切割:动态规划与分治的相同点:组合子问题求解原问题不同点:分治的子问题不重叠,做了重复工作,动态规划保存解到表中动态规划的特点:1最优子结构:问题的最优解由相关子问题的最优解组合而成,子问题可以独立求解动态规划的实现方式:1带备忘的自顶向下,2自底向上1带备忘的自顶向下:递归中保存子问题的解,需要子问题的解时,首先检查是否已经保存过此解,如果是直接返回保存的值2自底向上:定义子问题的规模,
天地一扁舟
·
2020-08-23 06:25
算法导论
算法导论
动态规划
钢条分割
贪心,深度优先(9)
就如《
算法导论
》里所说的:“人要活在当下”“看清楚眼前”……贪心算法正是“活在当下,看清楚眼前”的办法。
REXCPL
·
2020-08-23 06:40
C++
贪心
深度优先搜索
数模算法-图论算法
关于此类图论算法,可参考IntroductiontoAlgorithms–
算法导论
,关于图算法的第22章-第26章。
Dompink
·
2020-08-23 06:09
算法
多项式乘法 (快速傅里叶变换)
算法导论
里基本看懂了傅里叶变换的整个运行流程。后面剩下的就是如何规划设计程序,使得程序漂亮又高效,暂时没时间,先做个记录,后面慢慢实现。
8rfuz
·
2020-08-23 06:21
随记
算法导论
-单源最短路径-Dijkstra算法的实现
publicclassDijkstra{staticintM=10000;publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubint[][]weight1={{0,3,2000,7,M},{3,0,4,2,M},{M,4,0,5,4},{7,2,5,0,6},{M,M,4,6,0}};//有向图的矩阵表示,数值表示权重i
JKhere
·
2020-08-23 06:28
算法导论
&&
ACM
算法导论
26(最大流)
26.1流网络26.2Ford-Fulkerson方法Edmonds-Karp算法#include#includeusingnamespacestd;#definen20intf[n][n],cf[n][n],pred[n];boolvisited[n];typedefstruct{intVNum,ENum;intw[n][n];}Graph;voidcreate_graph(Graph&G){i
hz5034
·
2020-08-23 05:50
算法导论
算法导论
第三版 22.3 深度优先搜索 课后题答案全解析
22.3深度优先搜索:1.问有向图和无向图可能存在的三种颜色的点到点之间的边。这个问题比较简单,直接上传原版答案,但是要注意,有向图中存在黑色点到其他点的边,虽然黑色点是已经搜索结束的,但是这样的边始终存在。有向图:无向图:2.答案如下:注意其中数字没有重复的,无论如何time值都会+1。3.给出括号结构,题目中要求的是22-4即下图:因此括号结构应该为(((())))(()),作者认为参考答案解
谦恭
·
2020-08-23 05:39
algorithms
算法导论
22.2广度优先搜索 练习总结
22.2-1请计算出在有向图22-2(a)上运行广度优先搜索算法后的d值和π值,这里假定结点3为算法所用的源结点。ANSWER:22.2-2请计算出在图22-3所示无向图上运行广度优先搜索算法后的d值和π值。这里假定结点u为算法所用的源结点。ANSWER:22.2-3证明:使用单个位来存放每个结点的颜色即可。这个论点可以通过证明将算法第18行的伪代码删除后,BFS过程生成的结果不变来得到。ANSW
funggor
·
2020-08-23 05:47
算法导论(第3版)
算法导论
22章基本的图算法 思考题总结
22-1(以广度优先搜索来对图的边进行分类)深度优先搜索将图中的边分类为树边、后向边、前向边和横向边。广度优先搜索也可以用来进行这种分类。具体来说,广度优先搜索将从源结点可以到达的边划分为同样的4种类型。a.证明在对无向图进行的广度优先搜索中,下面的性质成立:1.不存在后向边,也不存在前向边。2.对于每条树边(u,v),我们有v.d=u.d+1。3.对于每条横向边(u,v),我么有v.d=u.d或
funggor
·
2020-08-23 05:14
算法导论(第3版)
线性规划及其解法
参考《
算法导论
》26章29章线性规划研究线性规划定义及其单纯性法(多项式时间方法)29.1标准型和松弛型研究线性规划的两种表现形式,标准型和松弛型以及其
LeetCoder
·
2020-08-23 05:44
算法
算法导论
书籍学习
第17章平摊分析17.1聚集分析这里的确定一个n个操作序列的总代价的上界T(n),也许某一步操作代价很大,但是平均代价很小的。该分析会被用在分析单源最短路径中的Dijkstra算法中,其朴素版本算法复杂度为O(v2+E),其中的E就是用聚集分析分析出来的。两个例子:第一个例子(考虑某个出栈k个元素的操作)第二个例子一个二进制加法器的操作我的直观感觉就是针对一个数据结构的操作分布在n步中,也许每一步
LeetCoder
·
2020-08-23 05:44
算法
算法导论
学习《视频》
很明显,啃
算法导论
是我必须要做的事情,参考《
算法导论
》b站
算法导论
分为两个部分,第一部分为算法分析,第二部分为算法设计。算法分析关注性能,也就是时间复杂度。
LeetCoder
·
2020-08-23 05:43
算法
算法导论
(第三版)-复习15动态规划
15动态规划1课后习题15.1-1数学归纳法证明15.1-2总长6,(i=4,p=8),(i=3,p=5)15.1-3rn=max(pi-c+rn−i),i=1..n15.1-4纪录每次切割i15.1-5顶点:0..n,边:2*(n-2+1)2课后习题15.2-1m[i,k]+m[k+1,j]+pi−1pkpj((A1A2)((A3A4)(A5A6)))…详见附件15.2-2F(A,s,i,j)i
ZoeyyeoZ
·
2020-08-23 05:00
算法
算法导论
(第三版)-复习16贪心算法
SchedulingTask[t]纪录开始时间为t的任务链表f[t]纪录t-n时间内最大value值,初始均为0fori=n-1to0do{t=Task[i].head;while(t){f[i]=max{f[i],f[t.endtime]+t.value};t=t->next;}f[i]=max{f[i],f[i+1]};}Fractionalknapsack根据性价比v/w排序证明分数背包问题
ZoeyyeoZ
·
2020-08-23 05:00
算法
算法导论
(第三版)-复习- 第六部分图论思考题 22 基本的图算法
ArticulationVertex/BridgeMatchingUSTC-算法基础课-2013-第二次习题课22基本的图算法
算法导论
22.1图的表示练习总结
算法导论
22.2广度优先搜索练习总结
算法导论
ZoeyyeoZ
·
2020-08-23 04:43
算法
图论
算法导论
(第三版)-复习- 第六部分图论 22-26[转]
22习题22.1-5有向图G(V,E)的平方图。链表表示时,对每结点u的Adj[u]中所有v加入队列,后边出队边将Adj[v]加入Adj[u]中。矩阵表示时,若w[i,j]、w[j,k]同时为1则将w[i,k]置1.习题22.1-6O(V)的时间寻找通用汇点。汇点的特征是邻接矩阵的第j列除[j,j]外所有元素为1.可将每行调整[j,j]后作为一个整数,所有整数与运算,为1的位是汇点。习题22.1-
ZoeyyeoZ
·
2020-08-23 04:43
算法
图论
桶排序的单链表实现及其变种
《
算法导论
》中桶排序问题的单链表实现《
算法导论
》
CLRS
第八章线性时间排序8.4桶排序桶排序的思想就是把区间[0,1)划分成n个相同大小的子区间,每一个区间称为桶(bucket)。
大白技术控
·
2020-08-23 04:01
C/C++
《
算法导论
》读书笔记之第15章 动态规划—矩阵链乘法
前言:今天接着学习动态规划算法,学习如何用动态规划来分析解决矩阵链乘问题。首先回顾一下矩阵乘法运算法,并给出C++语言实现过程。然后采用动态规划算法分析矩阵链乘问题并给出C语言实现过程。1、矩阵乘法从定义可以看出:只有当矩阵A的列数与矩阵B的行数相等时A×B才有意义。一个m×r的矩阵A左乘一个r×n的矩阵B,会得到一个m×n的矩阵C。在计算机中,一个矩阵说穿了就是一个二维数组。一个m行r列的矩阵可
weixin_34220179
·
2020-08-23 03:21
Java实现
算法导论
中最大公约数欧几里得算法
最大公约数的欧几里得算法,代码如下:packagecn.ansj;publicclassGCD{publicstaticvoidmain(Stringargs[]){GCDg=newGCD();//d=gcd(a,b)=gcd(b,amodb)intigcd=g.getGcd(42823,6409);System.out.println("IteratorAlgorithmgetgcd:"+igc
fjssharpsword
·
2020-08-23 01:24
Algorithm
Java
算法导论专栏
算法导论
CLRS
17.3-5 解答
按照原有方式定义势函数,记为P,根据公式17.4sum(ci)=sum(^ci)+P(D0)-P(Di)=2n+b-P(Di)=P(D0)没有任何关系转载于:https://www.cnblogs.com/ellusak/archive/2012/07/25/2608059.html
weixin_30918633
·
2020-08-22 23:56
算法导论
:线性时间排序
线性时间排序对于比较排序来说,在排序的最终结果中,各元素的次序依赖于它们之间的比较。我们可以看到下图中的比较排序算法,在最坏情况下情况下,时间复杂度至少O(nlgn)。线性时间排序从图中我们可以较为清楚的看到各算法的时间复杂度,下面将证明对包含n个元素的输入序列来说,在最坏情况下,时间复杂度至少都是O(nlgn)。决策树比较排序可以被抽象为一颗决策树,那什么是决策树呢?比如上图所示,现在要出去相亲
Bowiee
·
2020-08-22 23:39
算法导论
第三版 17.3-6习题答案
17.3-6答案:如10.1-6方法所示:(10.1-6答案)设Ci为第i个操作的代价(假定每个操作的代价为1),每次操作的势能D(i):定义为s1栈中的元素个数*2。那么有:
VS_mans
·
2020-08-22 22:52
算法导论习题答案
算法导论
之第十七章-平摊分析
平摊代价大意是指把总执行代价平摊到操作次数,因为虽然出现某些操作是高代价的,但是其他操作为代价较低时,平摊代价就较低了。习题:答:易得:当n=2k时,平摊代价最大。O(n)=1+2+1+4+1+1+1+8…=(1+2+4+…+2k)+(2k-k-1)=3*2k-k-2;n=2k;所以O(n)/n=3;记账方式就是每次操作都给固定金额,如果金额有的多,就存起来,如果某次操作金额不够,就是用存款,只要
孤竹彧
·
2020-08-22 22:49
算法
笔记
算法导论
练习题 17.2-3
按照提示,维护一个指针一直指向最高为的1只有i=2k时,increament才会进一位,其中k>=1andk<=lgn假设进行了m次increament操作后,进行reset操作则increament需要O(m)时间,reset需要1+2+3+...+lgm=O(lgm)时间所以设ki次increament操作后,进行reset操作其中k1+k2+k3+...=n则需要O(k1)+O(lgk1)+
万万岁
·
2020-08-22 22:21
算法导论
算法导论
瞎抄一点-散列表HashTable的Recap
前言:任何一个应用都要用到至少一种数据结构比如说我们的程序用到数据库,底层多半是优化后的b-tree.我们做一个最简单的Android程序,甚至不用到数据库,比方说用到SharedPreferences,那就是xml表单。甚至我们自己发明一个表单也是可以的,只要写好对应的解析器和编码器,然后给文件取一个没被占用的后缀名即可。这样的做法用到文件系统,文件系统也有底层的数据结构,可以说VFS也可以具体
Wallace_QIAN
·
2020-08-22 21:26
算法导论
习题解-第17章摊还分析
总结记账法相当于每月领取一定的零花钱,用来支付实际费用,只要在任何时候余额不为负。那么总花费一定不超过总的零花钱。必须条件,同时也是缺点:任何时候余额不为负。势能法条件比记账法宽松。对于数据结构的每个状态,定义一个势能P(i),第i步操作的摊还代价记为A[i]=c[i]+P(i)-P(i-1),只要P(n)>=P(0),摊还代价就不会超过实际代价。即用前面积累起来的势能支付后面代价较大的操作。习题
groovy2007
·
2020-08-22 21:25
算法
《
算法导论
》笔记 第17章 17.2 记账方法
【笔记】记账方法:对不同的操作赋予不同的费用,某些操作的费用比他们的实际代价或多或少。对一个操作的收费的数量称为平摊代价。当平摊代价超过实际代价时,两者的差值被当做存款,并赋予数据结构中一些特定对象。存款可以在以后用于补偿那些平摊代价低于其实际代价的操作。总存款等于总的平摊代价和总的实际代价之差,始终是非负的。【练习】17.2-1对一个大小始终不超过k的栈上执行一系列的栈操作。在每个k操作后,复制
cyendra
·
2020-08-22 21:43
算法导论
插入排序及其JAVA实现
插入排序作为
算法导论
这门课的第一个算法,我用JAVA实现起来很难,那天为了数组下标这个事,竟然折腾了四五个小时,可想而知我的基础是多么差了。插入排序,对于少量元素的排序,它是一个有效的算法。
Oliver_LJF
·
2020-08-22 21:48
算法导论
归并排序相关知识及
算法导论
第三版2.3-7实现
2.3-7描述一个运行时间为Θ(nlgn)的算法,给定n个整数的集合S和另一个整数x,该算法能确定S中是否存在两个其和刚好为x的元素。分析:首先将S进行排序,然后再通过查找算法进行查找。插入排序算法复杂度最差n^2,归并排序最差为nlgn,堆排序为最差为nlgn,快速排序最差为n^2,这里我们直接使用归并排序。所以实现归并排序是第一步。第二步为查找算法,且复杂度不低于nlgn的。首先想到每个数减去
Oliver_LJF
·
2020-08-22 21:48
算法导论
字节大佬整理面试算法真题,Github上已收获近60K+star!力压LeetCode只为面试
文档的作者最先提出「刷题要掌握模板和套路」的观点,刷题就是应对面试拿offer,再别整什么《
算法导论
》这种花里胡哨的了。
架构师联盟盟主
·
2020-08-22 20:16
Java
架构
面试
算法
数据结构
java
编程语言
面试
《
算法导论
》笔记 第17章 17.3 势能方法
【笔记】势能方法:已预付的工作表示成一种势能或势,他在需要时可以释放出来,以支付后面的操作。势函数Φ将每个数据结构Di映射为一个实数Φ(Di),即与数据结构Di相联系的势。第i个操作的平摊代价c'i=ci+Φ(D_i)-Φ(D_{i-1})n个操作总的平摊代价为∑c'i=∑ci+Φ(Dn)-Φ(D0)如果定义一个势函数使得Φ(Dn)>=Φ(D0),则总的平摊代价∑c'i就是总的实际代价∑ci的一个
cyendra
·
2020-08-22 20:05
算法导论
算法导论
第4章strassen算法JAVA实现
今天看了strassen算法,用java实现了一下。另外题目4.2-3,如何修改Strassen算法,使之适应矩阵规模n不是2的幂的情况?答:添加额外的行或列使之成为2的幂的方阵,添加的行或列均为0即可。文章中提到在分解矩阵时使用复杂度为θ(1)的下标运算,本人为了方便,是采用拷贝赋值的方式进行的矩阵分解。packageanswers.chapter04;importjava.util.Array
夏商周
·
2020-08-22 20:56
算法导论
MIT
算法导论
四 快速排序
分析快速排序快速排序是基于分治思想(Divide-and-conquer)的一种原地排序(Inplace),其效率依赖于输入数据的排序状况。快速排序中的分治法思想分解问题:原数组基于PivotX分成两部分,数组在X左侧的数据都小于X,在X右侧的数据都大于X递归的对两部分数组进行处理最关键的就是第一步:分化(Partition)的步骤,这是该算法处理问题的核心partition(A,p,q)xA[j
Alex90
·
2020-08-22 18:56
上一页
13
14
15
16
17
18
19
20
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他