算法
文章平均质量分 87
dovebs
这个作者很懒,什么都没留下…
展开
-
Nim-sum原理及应用
算法介绍:Nim游戏是指两个对手在m个堆中轮流随意从某一个堆中拿出n个元素,假定两个对手都是足够聪明,直至最后一次取的人将所有元素取出,此人取得胜利。与之相反的是Misere游戏,相同的游戏规则,但是最后一次取的人将落败。为了解决这个问题,有一个叫做nim-sum的方法加以解决,这个方法是这样的设有三个堆分别是 Heap A, Heap B,Heap C,每个堆分别有8,12,13个元原创 2012-08-07 22:40:22 · 4391 阅读 · 0 评论 -
大规模高能效图遍历: 一种高效的数据密集型超级计算方法
Large-Scale Energy-Efficient Graph Traversal: APath to Efficient Data-Intensive Supercomputing作者:Nadathur Satish, Changkyu Kim, Jatin Chhugani, and Pradeep DubeyParallel Computing Lab, Intel Cor翻译 2012-12-16 22:57:14 · 8426 阅读 · 0 评论 -
图搜索——深度优先与广度优先
图搜索的方法有两种,一种是深度优先,一种是广度优先由于这两种搜索算法在最坏时间的复杂度都接近于穷举,因此在算法中使用剪枝非常重要。区别1)回溯法 = 深度优先 + 剪枝 分支限界 = 广度优先 + 剪枝2)回溯法适用于在求解空间内求得所有解,通过不断地深入和回溯,每次扩展一个子节点,可以将满足条件的所有解搜出原创 2012-10-23 22:24:35 · 3190 阅读 · 0 评论 -
几种排序总结(下)——线性时间排序
线性时间排序计数排序 计数排序的前提是确定输入范围大小为0~k。在这个前提下,我们可以使用计数的方法对数组进行排序,而不是使用比较。算法思想如下:因为输入数组a[]中的元素范围固定,因此可以使用一个大小为k的数组c对a中的元素进行映射。 1.如果输入a为i,则使得c[i]++,表示元素i输入的次数。对数组a遍历一次后,就会根据元素i的大小映射到数原创 2012-10-20 10:53:15 · 3535 阅读 · 0 评论 -
几种排序总结(中)——快速排序
快速排序主要特点1)普通快速排序最差时间复杂度为o(n^2)2)期望时间复杂度为o(nlgn)3)在o(nlgn)中蕴含的常量比较小4)就地排序,不需要辅助数组空间主要操作1.数组划分 在快速排序算法中,最为关键的就是选取一个基值,将数组分为大于基值以及小于基值两部分,并返回基值所以在位置以利用于递归划分。 下面先介绍Lomu原创 2012-10-17 20:54:21 · 6735 阅读 · 0 评论 -
几种排序总结(上)——堆排序
堆排序这几天看了算法导论的排序部分,作一下总结。堆排序的优点 1)最坏情况下o(nlgn)的时间复杂度 2)就地排序,不用辅助数组几种操作(以最大堆为例)1.保持堆性质 这是主要操作,对于节点A[i],前提是以LEFT(i)和RIGHT(i)为根的子树已经是一个排列好的堆,因此如果A[i]比他的子节点要小,对A[i]进行判断原创 2012-10-17 17:17:01 · 5573 阅读 · 0 评论 -
整数拆分的两种解法(已完成)
前几天在算法书上看到一个整数拆分的题目,觉得挺有意思,记录如下: 题目:给定一个整数n,输出这个整数拆分的可能总数例如:n==6有65+14+2 4+1+13+3 3+2+1 3+1+1+12+2+2 2+2+1+1 2+1+1+1+11+1+1+1+1+1共11种分解方法,所以输出应该为11。分析一拆分按照原创 2012-09-30 17:04:40 · 18869 阅读 · 1 评论 -
田忌赛马(Tian Ji -- The Horse Racing)中的动态规划以及贪心算法
这两天碰到一道看似很简单,但是实际做起来确实比较难的问题,在这里分析讨论一下。题目:http://acm.hdu.edu.cn/showproblem.php?pid=1052Tian Ji -- The Horse RacingTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth原创 2012-09-20 20:58:16 · 13271 阅读 · 3 评论 -
贪心算法归纳
贪心算法,顾名思义是在程序设计过程中,在得到问题的解过程中,每一步采取的策略都为当前的局部最优,当这样进行下去确定最后得到的解为全局最优解,则贪心算法有效。贪心算法一般的基本步骤如下:1.确定每一步的局部最优解可以构成全局最优2.从问题的初始状态开始得到问题的初始解3.接下来每一步都选择在某种条件下当前最优的解,循环递进,缩减问题规模4.综合得到的局部最优解,得到全局最优解原创 2012-09-18 20:02:19 · 4211 阅读 · 1 评论 -
最长有序子序列—动态规划算法
动态规划使用范围:(http://baike.baidu.com/view/28146.htm)任何思想方法都有一定的局限性,超出了特定条件,它就失去了作用。同样,动态规划也并不是万能的。适用动态规划的问题必须满足最优化原理和无后效性。 1.最优化原理(最优子结构性质) 最优化原理可这样阐述:一个最优化策略具有这样的性质,不论过去状态和决策如何,对前面的决策所形成的状态而言,余下的诸决原创 2012-08-18 22:38:39 · 9517 阅读 · 0 评论 -
辗转相除法(欧几里得算法)示意图
通过辗转相除,最后得到两个数的最大公约数算法如下:int gcd(int da,int xiao) { int temp; while (xiao!=0) { temp=da%xiao; da=xiao; xiao=temp; } return(da);} 详见:ht转载 2012-08-08 16:08:20 · 3335 阅读 · 0 评论 -
C1-Arrays and String【Cracking the Coding Interview 习题解答】
1.1 Implement an algorithm to determine if a string has all unique characters. What if you can not use additional data structures?判断字符串是否有重复字符o(n^2)算法public static boolean checkUniqueChar1(cha原创 2013-10-21 17:13:46 · 1452 阅读 · 0 评论