#算法的乐趣

【算法总结】二叉树(王道机试指南第三章)

【算法总结】二叉树我们从二叉树的遍历谈起。众所周知,在对二叉树的遍历过程中,根据遍历每一个结点的左子树、结点本身、右子树的顺序不同可将对二叉树的遍历方法分为前序遍历、中序遍历、后序遍历。我们摒弃数据结构教科书上复杂的遍历方式,而是使用我们在上一章所重点讨论过的递归程序来简单的实现它。假设二叉树结点由以下结构体表示:&n...

【算法总结】哈夫曼树

在一棵树中,从任意一个结点到达另一个结点的通路被称为路径,该路径上所需经过的边的个数被称为该路径的长度。若树中结点带有表示某种意义的权值,那么从根结点到达该节点的路径长度再乘以该结点权值被称为该结点的带权路径长度。树所有的叶子结点的带权路径长度和为该树的带权路径长度和。给定n个结点和它们的权值,以它们为叶子结点构造一棵...
代码星球 ·2020-04-04

【算法总结】深搜

算法总结-深搜由于是深度优先,后进入的结点需要先读取,因此选取堆栈实现,在栈中保存从起始结点(状态)到当前结点的路径上的所有结点。一般用递归实现。非递归框架DFS(){初始化栈while(栈不为空&未找到目标结点){取栈顶元素扩展,扩展出的结点放回栈顶}......}递归框架在深度优先搜索中,状态空间的图结构并...
代码星球 ·2020-04-04

【算法总结】广搜

算法总结-广搜(BFS:breadth-firstsearch)广度优先搜索算法(用QUEUE)把初始节点S0放入Open表(待扩展表)中;如果Open表为空,则问题无解,失败退出;把Open表的第一个节点取出放入Closed表,并记该节点为n;考察节点n是否为目标节点。若是,则得到问题的解,成功退出;若节点n不可拓展...
代码星球 ·2020-04-04

【算法总结】递归

算法总结-递归定义:所谓递归即函数直接或间接地调用函数本身,调用的方式按照问题的不同人为定义,这种调用方式被称为递归方式。同时,为了不使这样的递归无限的发生,我们必须设定递归的出口,即当函数达到某种条件时停止递归。问题的求解过程->划分成相同性质的子问题的求解->子问题的求解过程可以很容易地求出->这...
代码星球 ·2020-04-04

【算法总结】枚举

算法总结-枚举定义:依次尝试搜索空间中所有的解,测试其是否符合条件,若符合则输出答案,否则继续测试下一组解。注意:在使用枚举这种相对较为暴力的解法来进行解题时,我们对其时间复杂度要做特别的关注。枚举问题的时间复杂度往往与需要枚举的情况个数有关,因为我们必须不遗不漏地枚举每一种可能成为答案的情况。所以搜索空间越大,枚举的...
代码星球 ·2020-04-04

【算法总结】动态规划-背包问题

动态规划-背包问题此博客分别讨论0-1背包,完全背包和多重背包,并给出相应的解题模板。0-1背包题目:有一个容量为V的背包,和一些物品。这些物品分别有两个属性,体积w和价值v,每种物品只有一个。要求用这个背包装下价值尽可能多的物品,求该最大价值,背包可以不被装满。 0-1背包问题:在最优解中,每个物品只有两种...

【算法总结】动态规划

动态规划(DP:DynamicProgramming)动态规划是求解包含重复子问题的最优化方法,把原问题分解为相对简单的子问题。动态规划只能应用于有最优子结构的问题(即局部最优解能决定全局最优解,或问题能分解成子问题来求解)。基本思想将原问题分解为相似的子问题,再合并子问题的解以得出原问题的解。动态规划在求解的过程中通...
代码星球 ·2020-04-04

最短编辑距离算法实现

一,算法介绍在CS124课程的第一周提到求解两个字符串相似度的算法---MinimumEditDistance(最短编辑距离)算法。该算法在NLP(自然语言处理)中也会用到。如何定义相似度呢?任给两个字符串X和Y,使用以下三种操作将字符串X变到字符串Y :①插入(Insert)操作;②删除操作(delete)...

js实现两种实用的排序算法——冒泡、快速排序

 分类:js(4443)(0)零:数据准备,给定数组arr=[2,5,4,1,7,3,8,6,9,0];一:冒牌排序1思想:冒泡排序思想:每一次对比相邻两个数据的大小,小的排在前面,如果前面的数据比后面的大就交换这两个数的位置    要实现上述规则需要用到两层for循环...

计算1-100之间的的常用算法

计算1-100之间的所有奇数的和classProgram{staticvoidMain(string[]args){intsum=GetOdd(1,100);Console.WriteLine("1-100之间所有奇数整数和{0}",sum);Console.ReadKey();}///<summary>/...

根据用户名生成注册码的算法

现在网上下载的软件大部分都需要注册后才能使用其全部的功能,也就是说当前大部分软件都是建立了注册机制的,对于一个刚进入软件行业的程序员来说一定非常想了解其中的注册机制是怎样实现的。其实用VC开发软件,是可以很方便地加入注册机制的。  要实现软件注册功能,首先需要知道实现注册机制要涉及到的几个问题:1、如何加入注册检测,判...

经典算法,每个语言都出现的算法

冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交...

倒排索引构建算法BSBI和SPIMI

参考:https://blog.csdn.net/androidlushangderen/article/details/44889677倒排索引:一般的索引检索信息的方式。比如原始的数据源假设都是以文档的形式被分开,文档1拥有一段内容,文档2也富含一段内容,文档3同样如此。然后给定一个关键词,要搜索出与此关键词相关的...

力导向算法的研究与改进

1.基础力导向算法1.1算法模型FR算法模型建立在粒子物理理论的基础上,将无向图的节点模拟成原子,通过模拟原子间的力场来计算节点间的相对位置。该模型假设任意两个节点间存在斥力,相互连接的两个节点间存在引力。通过模拟节点间的相互作用力,计算得到节点的速度和偏移量,经过不断的迭代计算,最终达到一种动态平衡的状态。1.2算法...
代码星球 ·2020-04-04
首页上一页...103104105106107...下一页尾页