
算法
文章平均质量分 78
假先生智铭
数据分析,财报分析,营销水手
展开
-
1.插入排序算法
先简单了解一下怎么建立一个c语言的工程项目:https://www.cnblogs.com/jerrybaby/p/6130574.htmlhttps://jingyan.baidu.com/article/925f8cb8f92a2bc0dde05606.html一开始输入一组数据,然后将其进行从小到大的排序:(果然是优秀,这题一看就知道不难对吧!!)算法思想:跟我们在玩...原创 2018-09-25 17:16:18 · 198 阅读 · 0 评论 -
12.带权有向图中任意两点间的最短路径
其实它的代码理解起来真的挺难的我觉得!!!昨天看了一下午感觉晦涩难懂,还是matlab好用,直接调用函数就可以了!!!不过这里还是得跟大家介绍一下:1.问题的理解:像这种带权的有向图,每一行都表示该行标号对应列标号的有向权值,本身到本身的数值为0,没办法到达的数值为∞2.最优子结构i,j是图里面的两个不同顶点,设p为从i到j的不经过{k+1,k+2,...n}点的最短路...原创 2018-09-30 11:55:16 · 4741 阅读 · 0 评论 -
11.0-1背包问题
1.问题解析:有 n 件物品和一个承受重量为 C 的背包。第 i 件物品的重量是 w[i],价值是 v[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过背包承受重量j,且价值总和最大。其中x=(X1,X2,...Xn)为最优解,其中Xn为0或1.要求满足sum(Xi*w[i])<=C,sum(Xi*v[i])最大 2.最优子结构(其中j=1,2,3,4,5...C)...原创 2018-09-29 11:58:45 · 283 阅读 · 0 评论 -
10.最长公共子序列
看了一下介绍,感觉还是挺简单的!!1.A和B的公共子序列中长度最长的(包含元素最多的)叫做A和B的公共子序列。 比如序列1,3,5,4,2,6,8,7和序列1,4,8,6,7,5。它们的最长公共子序列是: 1,4,8,7 1,4,6,72.考虑最长公共子序列的最优子结构(1) Ax = By 那么它们的最长公共子序列的最后一项一定是这个元素!(...原创 2018-09-28 20:31:24 · 686 阅读 · 0 评论 -
18.深度优先搜索(DFS)
深度优先搜索是以源顶点作为根来建立深度优先树,不过不同于广度优先树的建立,深度优先搜索建立的乃是树林(包含一棵或是说多棵)。广度优先表示的是从源顶点出发,每次都摸索周围最近的邻近点,邻近点再想外摸索邻近点,直至全部点探索完毕深度优先表示的是从源顶点出发,一条路走到黑,其中要是发现走不通的,就开始返回,返回的途中要是发现有新的交叉路口,就往新的路探索一番,然后在回来。这条路走完回来后再从另一...原创 2018-10-07 10:32:59 · 322 阅读 · 0 评论 -
17.广度优先搜索(BFS)算法
已知图G=(V,E)和一个源顶点s,广度优先搜索以一种系统的方式探寻G的边,从而“发现”s所能到达的所有顶点,并计算s到所有这些顶点的距离(最少边数),该算法同时能生成一棵根为s且包括所有可达顶点的广度优先树。算法首先搜索和s相邻的顶点v,然后再去搜索相邻顶点v的其他相邻顶点。为了保持搜索的轨迹,广度优先搜索为每个顶点着色:白色、灰色或黑色。算法开始前所有顶点都是白色,随着搜索的进行,各顶...原创 2018-10-05 17:39:00 · 1141 阅读 · 0 评论 -
9.矩阵链乘法
其实这个过程不是很理解,书里的考究是使其能满足最优解,就是我们之前一直说的动态规划情况下满足的最优解。以下部分内容引用:https://blog.youkuaiyun.com/c18219227162/article/details/50412333(感谢大神,只用于学习)给定一个n个矩阵的序列(矩阵链)<A1,A2,...,An>,我们希望计算它们的乘积 A1A2...An,为了计算表...原创 2018-09-27 17:14:30 · 715 阅读 · 0 评论 -
8.基于二叉堆的优先队列算法
其实根据已经看到的伪代码来说,感觉它的计算方式还是很简单的,主要还是基于原有二叉堆的实现算法上进行一定程度的改造,一个是入队算法,就是指添加一个元素到原有数组之中,该数组本来已经实现了二叉堆,一开始先将添加的元素放置在数组最尾部,也就是二叉堆的最后一个三角节点处,开始进行上级父节点的比较,不断的比较最终确定其位置。另一个是出队算法,这个就比较简单了,跟前面的堆排序其实差不多,就是每次提取出整个二叉...原创 2018-09-26 19:02:39 · 147 阅读 · 0 评论 -
16.Hamilton(哈密顿)回路问题
这个回路问题还好不是很难,就是代码有点多,有很多看不懂其实哈密顿回路就是说,如上图a中所示,有5个位置点,其中的连线表示两位置点之间可以往来,现在要求从其中某一个点出发,然后遍历所有点后(每个位置点只能走一次)回到起始位置点。它的行进方式还是有很多种的,也没有什么具体条件的要求。然后b图就是利用回溯算法(其实就是穷尽所有的计算,只不过它的步骤比较系统)来计算可行的行进方式:假设一开...原创 2018-10-03 15:49:01 · 9684 阅读 · 0 评论 -
15.最小生成树问题
首先要先说明一下其实这种最小生成树问题的作用领域感觉还是比较实际的,意思就是在已知的坐标位置上进行生成最小生成树而这生成树能使得整体的距离之和最小,如果在现实生活中的话就是能够使得已有的位置之间建立的完整道路线最短,相应的费用就最低!!!1.直接进行贪婪选择说明如图中所示,一开始先给定了起始点(就是生成树的根),然后将位置记录下来,然后遍历剩下的位置,看看哪些位置在跟位置的附近,然后找...原创 2018-10-02 15:22:35 · 497 阅读 · 0 评论 -
7.堆排序算法
看起来堆排序还是挺简单的,每次通过最大堆排序得到根(就是这个数组的最大值),然后置换到数组的最后位置,再将其中的堆实现方法中的元素个数heap-size[A]减1,在进行最大堆实现,重复以上步骤直到全部置换完成。看起来还是相当好看的!!!(哎,盗图可耻,哈哈)算法伪代码:HEAPSORT(A)1. BUILD-MAX-HEAP(A)2. for i <-l...原创 2018-09-26 13:30:41 · 167 阅读 · 0 评论 -
14.Huffman(哈夫曼)编码
首先声明一下,我感觉这个算法它的代码有点复杂,等一下我写的时候你就知道了。但是在理解上来说很简单,这就是它最矛盾的地方!!1.问题解析由上图可以看出每个字符在文件中出现的次数(频率)以及编码方式,本题研究的就是实现最优字符编码,要求编码文件所需比特数目最少。就像上图,对于定长编码字来说:(45+13+12+16+9+5)*3=300;对于变长编码字来说:(45*1+13*3+12*3+...原创 2018-10-02 10:41:36 · 1883 阅读 · 0 评论 -
6.二叉堆实现算法
刚才聊了一会天,思路有点乱了,努力整理了一下!!!二叉堆其实就是像生成树一样的方式:其中还是有一些很nice的约束,就拿其中一个三角节点来看,要求父节点的值一定要大于两个子节点的值,然后为了满足这个约束,下面就产生了一些约束生成的伪代码:算法伪代码:MAX-HEAPIFY(A,I)1. l <- LEFT(i) //其中 i,l,r都为上述图片中圆圈外的数组标号...原创 2018-09-26 10:08:04 · 275 阅读 · 0 评论 -
5.快速排序算法
据说这是一种能够快速计算进行排序的算法,刚才发现一件很不开心的事情,博客上有一些代码莫名其妙被删去了,算啦,删掉也好,下次看到的时候就会努力去思考这几个地方应该写什么,就不用直接copy了!! 大概了解了一下它的算法步骤,一开始就是先利用之前的序列划分算法将其分为两部分,然后将这两部分又分别进行序列划分,多次重复进行序列划分后就得到最后全部排好序的数组。(感觉跟前面的归并排序差不多,就底层...原创 2018-09-25 17:44:26 · 217 阅读 · 0 评论 -
4.Hanoi塔递归算法
其实这个东西我有点看不懂,但觉得像我那么没基础的人都选择留下一部分知识点,肯定是考虑到它的实际效用相当高啦!!输入:圆盘数n,3根细杆——源杆A,过渡杆B,目标杆C输出:圆盘从源杆移动到目标杆过程的最少步骤序列考虑方法,若只有一个盘子,则只要将其从源杆A移动到目标杆C就行。如果多于一个盘,先将源杆A上的前n-1个盘移动到过渡杆B上,再将留在源杆上的最大的盘移动到目标杆上,最后将过渡杆上...原创 2018-09-25 17:38:31 · 1949 阅读 · 0 评论 -
3.序列划分算法
输入:序列A[p...r].存在下标q(p<=q<=r),其中A[p...q]中的元素不超过A[r],而A[q+1...r]中的元素均大于A[r].设置两个下标i,j初始时分别为p-1和p.让j在[p...r]中扫描,若A[j]<=A[r],则将A[j]与A[i+1]交换,然后i增加1.随着j的增加,A[p...i]和A[i+1...j]也会增长,最终j到达r,将A[i+...原创 2018-09-25 17:33:15 · 1582 阅读 · 0 评论 -
2.归并排序算法
其实这个算法很简单,当然只要你能看下去的话,发现很好理解的这个过程:1.对前后两部分是已经排好序的:输入:序列A[p...r].其中子序列A[p...q]和A[q+1...r]是有序的。首先,将A[p...q]和A[q+1..r]分别复制到序列L[1...n1]和R[1...n2]中,其中1=q-p+1,n2=r-q。然后,将i,j初始化为1,k初始化为p.比较L[i]与R[j]...原创 2018-09-25 17:27:35 · 148 阅读 · 0 评论 -
13.活动选择问题
1.问题解释假定有n个活动要求只能在同一间教室里面举办,要求怎么安排才能使给定的任务数内做最多的活动。输入:按每个活动完成时间排序(升序),开始时间数组S,完成时间数组F输出:表示最大活动数的数组{X1,X2,...Xn},其中Xi=0(没选择)或者1(选择)2.贪心选择如上图所示,一开始先由排序结果确定第一个要做的活动,然后遍历剩下的活动,如果发现有下一个活动的举办时...原创 2018-09-30 19:40:53 · 840 阅读 · 2 评论