算法_Tag标签_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
当前位置:程序员俱乐部 >>Tag标签 >> 算法 >>列表
北京liuxinyu同学写完《初等算法》。全书英文写作,600多页:我终于写完了《初等算法》一书。这本书完全免费,可以从这里下载电子版:https://github.com/liuxinyu95/AlgoXY/blob/algoxy/preview/elementary-algorithms.pdf?raw=trueWhy算法书籍汗牛充栋,《算法导论》,《计算机程序设计艺术》,《计算机程序的构造和解释》……,为什么要写这么一本书?是不是重复发明轮子... 查看全文
· java算法插入排序优化代码发布时间:2014-07-28
原文:java算法插入排序优化代码代码下载地址:http://www.zuidaima.com/share/1550463280630784.htm一个细节让插入排序更具效率运行此方法需要为main方法传递参数packagecom.zuidaima.sort;/***@authorwww.zuidaima.com**/publicclassTestSort{publicstaticvoidmain(Stringargs[]){intl=args.length;int[]a=newint[l]... 查看全文
【引用】迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。基本思想通过Dijkstra计算图G中的最短路径时,需要指定起点s(即从顶点s开始计算)。此外,引进两个集合S和U。S的作用是记录已求出最短路径的顶点(以及相应的最短路径长度),而U则是记录还未求出最短路径的顶点(以及该顶点到起点s的距离)。初始时,S中只有起点s;U中是除s之外的顶点... 查看全文
· java希尔排序算法发布时间:2014-07-27
原文:java希尔排序算法代码下载地址:http://www.zuidaima.com/share/1550463279090688.htm希尔排序算法的基本思想是:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插人排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排序为止... 查看全文
写道//Java实现逆向最大匹配中文分词算法publicclassSplitChineseCharacter{publicstaticvoidmain(String[]args){Stringinput="太好了,今天是星期六啊";//要匹配的字符串newSplit(input).start();}}classSplit{privateString[]dictionary={"今天","是","星期","星期六"};//词典privateStringinput=null;publicSplit... 查看全文
HBO的电视剧《硅谷》讲述的是一位年轻的创业者Richard和他的创业公司PiedPiper的故事,这家创业公司开发的一种开创性技术是“通用压缩算法”。创作者希望他们在电视上展示的技术可信又能易于被观众理解。但电视剧的技术顾问JonathanDotan并不是压缩算法专家,所以他求助于Google,在上面找到了斯坦福的教授TsachyWeissman,向他发去了邮件。Weissman教授通常不会去看不请自来的邮件,但凑巧他打开了邮件并立即产生了兴趣... 查看全文
线性查找,肯定是以线性的方式,在集合或数组中查找某个元素。本篇包括:通过代码来理解线性查找时间复杂度什么是算法通过代码来理解线性查找什么叫"线性"?还是在代码中体会吧。首先需要一个集合或数组,如何得到呢?就生成一个固定长度的随机数组吧。然后输入一个查找key,如果找到就返回元素的索引,没找到就返回-1,就这么简单。classProgram{privatestaticint[]arr;privatestaticRandomr=newRandom();staticvoidMain... 查看全文
· 最短路径算法之一——Floyd算法发布时间:2014-07-26
Floyd算法Floyd算法可以用来解决任意两个顶点之间的最短路径问题。核心公式为:Edge[i][j]=Min{Edge[i][j],Edge[i][k]+Edge[k][j]}。即通过对i,j两个顶点之间插入顶点后比较路径的大小来进行松弛。首先我们来定义一个二维数组Edge[MAXN][MAXN]来存储图的信息。这个图的Edge数组初始化以后为相当于任意两点之间不允许经过其他点时的距离情况。Code1:1//经过1号顶点2for(i=1;i<=n;i++)3for(j=1;j<... 查看全文
英文原文:What’sUpWithThat:WhyYouAlwaysSeemtoChoosetheSlowestLine为了赶紧买到个东西,你跑进了百货商店。你匆匆忙忙地选好你要的商品,朝商店前方走去。在迅速瞄了一眼收银处排的队伍之后,你选择了看上去最快的那列队伍。你的选择大错特错。那些在你选择了队伍之后才在其他队伍排队的人已经付完帐去停车场了。为什么遇到这种事情的总是你?为什么这个残酷的世界会允许这种事情发生?这不公平!呃,其实,这只是数学在碍着你的事罢了... 查看全文
《NoMan’sSky》作者SeanMurray不能保证他构建的虚拟宇宙是无限的,但他确信即使不是无限的,也没有人会发现。因为即使你每秒访问一个虚拟星球,在你访问完所有星球前我们太阳就已经死亡了。《NoMan’sSky》是一个完全不同于其它游戏的视频游戏,由独立游戏工作室HelloGames开发,开发团队规模很小,最早只有4个人,最近几个月增加到了10个人。游戏世界中的每一块岩石、花朵、树木、生物和植物都是“过程生成”... 查看全文
· 一致性哈希算法与Java实现发布时间:2014-07-23
一致性哈希算法是分布式系统中常用的算法。比如,一个分布式的存储系统,要将数据存储到具体的节点上,如果采用普通的hash方法,将数据映射到具体的节点上,如key%N,key是数据的key,N是机器节点数,如果有一个机器加入或退出这个集群,则所有的数据映射都无效了,如果是持久化存储则要做数据迁移,如果是分布式缓存,则其他缓存就失效了。因此,引入了一致性哈希算法:把数据用hash函数(如MD5),映射到一个很大的空间里,如图所示。数据的存储时,先得到一个hash值,对应到这个环中的每个位置... 查看全文
· Java 扑克发牌算法实现发布时间:2014-07-22
原文:Java扑克发牌算法实现代码下载地址:http://www.zuidaima.com/share/1550463274224640.htm两种方法:A.扑克发牌算法是棋牌游戏中常用的基础算法,也是游戏开发人员需要熟悉的基础算法之一。下面介绍一下该算法的一种实现方式。B.利用Random类的对象的链表中一随机的顺序存储一副52张的纸牌。用含有连个字符的字符串代表纸牌,例如“1C”表示梅花A,”JD”表示方片J等。从栈中输出4手牌,每手牌有13张纸牌。首先给扑克牌中每张牌设定一个编号... 查看全文
· 二分查找排序算法发布时间:2014-07-21
一:概念二分查找又称折半查找(折半搜索/二分搜索),优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止... 查看全文
· java基数排序算法代码下载发布时间:2014-07-21
原文:java基数排序算法代码下载代码下载地址:http://www.zuidaima.com/share/1550463272684544.htm基数排序:基数排序可以说是扩展了的桶式排序,*比如当待排序列在一个很大的范围内,比如0到999999内,那么用桶式排序是很浪费空间的。*而基数排序把每个排序码拆成由d个排序码,比如任何一个6位数(不满六位前面补0)拆成6个排序码,*分别是个位的,十位的,百位的。。。。*排序时,分6次完成,每次按第i个排序码来排。*一般有两种方式:*1)高位优先... 查看全文
英文原文:Beatingthebinarysearchalgorithm二分检索是查找有序数组最简单然而最有效的算法之一。现在的问题是,更复杂的算法能不能做的更好?我们先看一下其他方法。有些情况下,散列整个数据集是不可行的,或者要求既查找位置,又查找数据本身。这个时候,用哈希表就不能实现O(1)的运行时间了。但对有序数组,采用分治法通常可以实现O(log(n))的最坏运行时间。在下结论前,有一点值得注意,那就是可以从很多方面“击败”一个算法:所需的空间,所需的运行时间... 查看全文
· java桶式排序算法代码下载发布时间:2014-07-20
原文:java桶式排序算法代码下载代码下载地址:http://www.zuidaima.com/share/1550463272176640.htm桶式排序:*桶式排序不再是基于比较的了,它和基数排序同属于分配类的排序,*这类排序的特点是事先要知道待排序列的一些特征。*桶式排序事先要知道待排序列在一个范围内,而且这个范围应该不是很大的。*比如知道待排序列在[0,M)内,那么可以分配M个桶,第I个桶记录I的出现情况,*最后根据每个桶收到的位置信息把数据输出成有序的形式。*这里我们用两个临时性数组... 查看全文
· MD5 算法概述以及c++实现发布时间:2014-07-04
MD5算法概述以及c++实现一、MD5介绍MessageDigestAlgorithmMD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。此算法以任意长度的信息(message)作为输入进行计算,产生一个128-bit(16-byte)的指纹或报文摘要(fingerprintormessagedigest)。两个不同的message产生相同messagedigest的几率相当小... 查看全文
· Science发表的超赞聚类算法发布时间:2014-07-02
作者(AlexRodriguez,AlessandroLaio)提出了一种很简洁优美的聚类算法,可以识别各种形状的类簇,并且其超参数很容易确定。算法思想该算法的假设是类簇的中心由一些局部密度比较低的点围绕,并且这些点距离其他有高局部密度的点的距离都比较大。首先定义两个值:局部密度ρi以及到高局部密度点的距离δi:ρi=∑jχ(dij−dc)其中χ(x)={10ifx<0otherwise,dc是一个截断距离,是一个超参数... 查看全文
据国外媒体Wired报道,苹果最近正在联系多位语音识别技术的专家,正在招聘经理、小组负责人、研究员,很可能将成立一支强大的语音识别团队,并最终取代现在的Siri技术服务商Nuance。Nuance是语音识别领域的领头羊公司,最近传闻正在洽谈出售业务,三星和其他几家PE公司都有意向。2010年4月,苹果以1.5~2.5亿美元收购了Siri,吸纳了Siri的24名员工,此后一直使用Nuance的技术服务。不过,从2011年开始,就有传言表示,苹果将舍弃Nuance,自己做语音识别... 查看全文
网友制作了一个用HTML5动画形式表现的各种排序算法的工作原理。请查看链接:http://www.webhek.com/misc/comparison-sort/... 查看全文