算法研究
文章平均质量分 64
架构师思考实践
大数据、实时计算、离线计算
展开
-
实际项目中的常见算法--有实现--好强大--慢慢学习
近日Emanuele Viola在Stackexchange上提了这样的一个问题,他希望有人能够列举一些目前软件、硬件中正在使用的算法的实际案例来证明算法的重要性,对于大家可能给到的回答,他还提出了几点要求:使用这些算法的软件或者硬件应该是被广泛应用的;例子需要具体,并给出确切的系统、算法的引用地址;在经典的本科生或者博士的课程中应该教过这些算法或者数据结构;Vijay转载 2013-12-02 23:27:14 · 1243 阅读 · 0 评论 -
单词博弈 --- java实现
前段时间做了一道题,这里mark一下。题目:甲乙两个人用一个英语单词玩游戏。两个人轮流进行,每个人每次从中删掉任意一个字母,如果剩余的字母序列是严格单调递增的(按字典序a 两个人都足够聪明(即如果有赢的方案,都不会选输的方案 ),甲先开始,问他能赢么?输入: 一连串英文小写字母,长度不超过15,保证最开始的状态不是一个严格单增的序列。输出:1表示甲可以赢,0原创 2014-01-05 22:37:48 · 1891 阅读 · 0 评论 -
每天一个小算法 --- 排序
温习以前的算法,每天来一点,希望能坚持1、冒泡排序最简单的排序算法,思想:将数组遍历n-1次,每次选出最大的元素放在队尾。直接上代码:package sort;public class TestSort { public static void main(String []args){ int b[] = {5,3,12,4,78,6,10,33}; i原创 2014-01-20 23:39:35 · 1270 阅读 · 0 评论 -
蒙特卡罗算法
蒙特·卡罗方法编辑蒙特卡洛算法即蒙特·卡罗方法。蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。与它对应的是确定性算法。蒙特·卡罗方法在转载 2014-02-09 19:55:12 · 5339 阅读 · 0 评论 -
快速排序 -- java实现
思想:采用分治策略。每次排序会使一个元素落在最终位置,并且该元素之前的数据都比不比它大,之后的元素都不比它小。然后再对前后两部分分别进行快排。每一轮排序的思想:选定一个元素为比较标准pivot,从后往前找到第一个比它小的元素,并将该元素放在最小下标位置,最小下标++;从前往后找到第一个比它大的元素,并将该元素放在最大下标位置,最大下标--;将pivot复制给原创 2014-03-29 22:39:43 · 1063 阅读 · 0 评论 -
字符串反转 -- java实现
问题:将输入的字符串,反转输出。方法一:将输入String转为char数组,数组反转,然后再转回String代码package String;public class Convert { public static void main(String[] args) { String a="123 安 a bc"; System.out.pr原创 2014-03-28 22:05:02 · 1212 阅读 · 0 评论 -
约瑟夫环 java实现
问题:N个人从1到N编号,围城一圈,从1开始报数, 数到X时,将X的编号输出,并将那个人踢出,下一个从1再开始报数,直到所有人都出去思路:就是计数,移除,没有太深的思想,直接上代码:package test;import java.util.ArrayList;import java.util.List;import java.util.Scanner;/**原创 2014-04-30 09:27:43 · 8068 阅读 · 2 评论 -
Hash散列算法之 Time33算法
hash在开发中经常用到,而现在time33算是最流行的哈希算法。算法:对字符串的每个字符,迭代的乘以33原型:hash(i) = hash(i-1)*33 + str[i] ;在使用时,存在一个问题,对相似的字符串生成的hashcode也类似,有人提出对原始字符串,进行MD5,然后再计算hashcode。原创 2014-04-19 00:24:01 · 4139 阅读 · 0 评论 -
2048-AI程序算法分析
针对目前火爆的2048游戏,有人实现了一个AI程序,可以以较大概率(高于90%)赢得游戏,并且作者在stackoverflow上简要介绍了AI的算法框架和实现思路。但是这个回答主要集中在启发函数的选取上,对AI用到的核心算法并没有仔细说明。这篇文章将主要分为两个部分,第一部分介绍其中用到的基础算法,即Minimax和Alpha-beta剪枝;第二部分分析作者具体的实现。基础算法转载 2014-05-12 00:46:40 · 1713 阅读 · 0 评论