Algorithm
文章平均质量分 75
RayChase
博客搬家了: https://www.raychase.net/
展开
-
回溯法解迷宫问题的两个解法
解法1:/**//*使用回溯法计算迷宫问题*/#include<stdio.h>#include<stdlib.h>structpos...{introw;intcol;};voidmain()...{intmaze[5][5]=...{0,1,0,1,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,0,1,1,0};//1表示障碍,0表示可以...2008-03-27 20:46:00 · 178 阅读 · 0 评论 -
排序算法一览(二):归并类排序、分布类排序和混合类排序
归并类排序归并排序(Merge Sort)归并排序是一种分治法,它反复将两个已经排序的序列合并成一个序列(平均时间复杂度O(nlogn),最好时间复杂度O(n)):申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列;设定两个指针,最初位置分别为两个已经排序序列的起始位置;比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置;重...2013-12-22 22:04:22 · 671 阅读 · 0 评论 -
排序算法一览(一):交换类、选择类和插入类排序
最近在复习常用排序算法发现了下面这个罪恶的排序方法列表页面,我被那些有趣的排序方法诱惑了,就把上面介绍的各种排序方法都整理了一遍(我觉得维基百科比其它我看过的算法书都要易懂一些),前半部分可以说还乐在其中,后半部分就有些厌烦了,不过最后总算是坚持看完了。以下是第一部分,包括交换类排序、选择类排序和插入类排序。交换类排序 - 冒泡排序 鸡尾酒排序 奇偶排序 梳子排序 侏儒排序 快速排序 臭皮...2013-12-18 22:31:53 · 713 阅读 · 0 评论 -
Trie树和其它数据结构的比较
Trie树,又叫做前缀树或者是字典树,是一种有序的树。从空字符串的根开始,往下遍历到某个节点,确定了对应的字符串,也就是说,任意一个节点的所有子孙都具备相同的前缀。每一棵Trie树都可以被看做是一个简单版的确定有限状态的自动机(DFA,deterministic finite automaton),也就是说,对于一个任意给定的属于该自动机的状态(①)和一个属于该自动机字母表的字符(②),都可...2013-12-10 13:52:17 · 178 阅读 · 0 评论 -
梅森素数
古希腊数学家欧几里德就已证明素数有无穷多个,并提出一些素数可写成“2P-1”(其中指数P也是素数)的形式,其中17世纪法国数学家、法兰西科学院奠基人马林·梅森(Martin Mersenne)是其中成果较为卓著的一位,因此数学界将“2P-1”型的素数称为“梅森素数”。1772年,欧拉在双目失明的情况下,靠心算证明了231-1(即2147483647)是第8个梅森素数,这个记录一百多年内都没有...2013-02-06 12:42:31 · 1364 阅读 · 0 评论 -
给我一把榔头,满世界都是钉子
一篇文章存成一个巨大的文件,总共大约有一亿个单词,要找出里面重复次数最多的。怎么做?Hadoop是一把威力巨大的榔头,在使用过Hadoop之后,看着任何东西都想把它给map reduce了。有一个关于Jeff Dean的小笑话,说在睡不着觉的时候,一般人是数羊,Jeff Dean是map reduce他的羊群。所以,我的办法是,把这个文件拆分成若干个小文件,在map过程用hash算法保证相同...2013-11-29 11:33:08 · 385 阅读 · 0 评论 -
再谈大楼扔鸡蛋的问题
这道题是说,100层楼,两个一模一样的鸡蛋,某层之上扔鸡蛋就会碎。问要测试多少次才能找出这层楼来。我曾经在去年初的这篇文章里面讨论过这个问题的解法,因为只想记录一下思路和讨论过程,写得很简略。现在,我想重新整理一下这个问题,再稍稍扩展和挖掘一下。希望可以用尽可能清晰易懂的描述,把这个问题的前后说清楚。现在只有两个鸡蛋,而算法必须是可行的,就是说要能找出这一层来,所以你得假设你的运气最差,这就...2013-05-19 22:48:30 · 243 阅读 · 0 评论 -
Google矩阵
使用一款搜索引擎,我们希望搜索结果能够拥有最佳的排序,Google为它最核心的排序算法PageRank申请了专利。在PageRank以前,排序大多依靠对搜索关键字和目标页的匹配度来进行的,这种排序方式弊端明显,尤其对于善于堆砌关键字舞弊的页面,很容易就跳到了搜索结果的首页。Larry Page和Sergey Brin开始着手解决这个问题,Google排序的继承来自于互联网上网页之间的链接关系。一...2013-04-03 00:37:21 · 729 阅读 · 0 评论 -
Algorithm In Interview
The whole team talked about algorithm recently, since we found some leaked written exam questions on Internet so that online test became meaningless soon. On one hand we’re thinking about how to con...2013-03-29 00:17:21 · 131 阅读 · 0 评论 -
使用ID3算法构造决策树
决策树决策树是一个预测模型,它代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。这张图很好地解释了决策树:明天要不要出去玩?晴天:潮湿:不出去不潮湿:出去阴天:出去玩雨天:刮风:不出去不刮风:出去例子中可...2013-03-20 10:34:45 · 2454 阅读 · 0 评论 -
朴素贝叶斯分类
贝叶斯定理英国数学家贝叶斯(Thomas Bayes)曾经给出如下定理:P(A)表示A事件发生的概率,P(B)表示B事件发生的概率;P(A|B)表示在B事件已经确定发生的情况下,发生A事件的概率;P(B|A)表示在A事件已经确定发生的情况下,发生B事件的概率;P(AB)表示AB事件同时发生的概率。所以:P(A)P(B|A)=P(AB)=P(B)P(A|B)也就是说,A事件...2013-03-19 11:26:09 · 157 阅读 · 0 评论 -
寻找组成字母相同的单词
这篇文章是对这个帖子的汇总,帖子里的答复都很有意思,真希望ITEye多一些这样的帖子,少一些浮躁和毫无意义的争论。我把帖子汇总贴在下面: Write a function that takes as input list of words and prints out groups of words with exactly the same letters, one group pe...原创 2012-02-15 22:01:16 · 1155 阅读 · 0 评论 -
大楼扔鸡蛋问题的求解讨论
有道经典的算法题,100层楼,两个鸡蛋。某层之上扔鸡蛋就会碎。问至少要测试多少次才能找出这层楼来。 如果只有一个鸡蛋,我就只能一层一层试验。两个的话关键就是找着第一个鸡蛋试验的位置,第二个鸡蛋还是只能一层一层试验。这道问题其实可以扩展到任意个鸡蛋,但现在还是只看2个鸡蛋的情况。2个鸡蛋只有n层的最优解求出来假使为k,那么,n+1层的时候,把第一个鸡蛋在第k层释放,只有两种情况(n+...2012-02-03 00:51:33 · 122 阅读 · 0 评论 -
青蛙跳台阶问题的三种解法
题目:一只青蛙一次可以跳1级台阶,也可以跳2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。这道题还被ITEye放在了博文视点杯有奖答题活动里面。 我提供三种解法。 1、递归求解:青蛙每跳一次前,有这样三种情况:(1)只剩1级或0级台阶了,只能跳一步或者无法再跳了,那么这条路也走到了终点,走法的种类数可以加1;(2)可以走2级台阶;(3)可以走1级台阶。于是...2012-01-07 20:50:05 · 1460 阅读 · 0 评论 -
寻找最长回文串长度的一个动态规划解法
今天某面试题,要在任意给定的字符串中,寻找最长回文串的长度。注:回文串是指abc、abbc、aaabccc、aaaccc这种左右对称的字符串。比如:abcaabbbaad字符串中,最长回文串的长度是7。 /** * 思路:<br> * 动态规划。一个指针从头往后遍历;一个指针从后往前遍历,把之前比较过的结果存到二维数组内,每个单元表示截止匹配到某一个字符串,所属...2012-01-05 22:03:38 · 148 阅读 · 0 评论 -
随手记:巧妙设计,并发场景下突破常规synchronize,提高读写效率
1、Peterson 算法(Dekker算法的演化),这个算法设计得很巧妙,理解的核心就是搞清楚三个标志位是怎样控制两个方法对临界区的访问的:volatile int flag1 = 0; //主观因素:flag1表示方法1自身是否要求进入临界区 volatile int flag2 = 0; //主观因素:flag2表示方法2自身是否要求进入临界区 volatile int turn...2011-06-26 01:10:00 · 154 阅读 · 0 评论 -
换个角度思考问题
最近在看一本书,叫做《思考的乐趣》,第26节“我最爱的证明”,里面介绍了这样一则有趣的问题(文章链接在此):设想一个平面上布满间距为1的横纵直线,形成由一个个1×1正方形组成的网格。任意给一个面积小于1个单位的图形,证明这个图形总能放在网格中而不包含任何一个格点。初看这个论断,觉得似乎是正确的,但又不知从何下手。文中指出证明的思路很巧妙,让人感到数学的美妙。我的感触是,文中的...2013-10-03 21:58:12 · 385 阅读 · 0 评论