
算法
文章平均质量分 82
u010850285
这个作者很懒,什么都没留下…
展开
-
折半查找(二分查找)
二分查找的基本思想是将n个元素分成大致相等的两部分,去a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果xa[n/2],则只要在数组a的右半部搜索x.时间复杂度无非就是while循环的次数!总共有n个元素,渐渐跟下去就是n,n/2,n/4,....n/2^k,其中k就是循环的次数由于你n/2^k取整后>=1即令n/2^k=1可得k=log2n,(是以2为转载 2014-10-21 17:44:43 · 416 阅读 · 0 评论 -
动态规划
http://blog.youkuaiyun.com/mengzhejin/article/details/37880413终于来到了算法设计思想中最难,也最有趣的这部分,在去年的google笔试中,7道算法设计题有2道动态规划(Dynamic Programming)。看了这么久的算法,这部分也是唯一感觉到了比较难的地方,从这篇文章开始,将花连续的篇幅来讨论一些动态规划的问题。这转载 2014-10-21 10:04:03 · 387 阅读 · 0 评论 -
时间复杂度
基本的计算步骤时间复杂度的定义 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n))为算法的渐进时间复杂度(O是数量级的符号),简称时间复杂度。根据定义,可以归纳出基本转载 2014-10-21 17:26:28 · 312 阅读 · 0 评论 -
期盼覆盖(分治)
题目在线: 棋盘覆盖问题Time Limit: 1000ms, Special Time Limit:2500ms,Memory Limit:32768KBTotal submit users: 62, Accepted users:26Problem 10432 : No special judgementProblem转载 2014-10-21 19:06:58 · 891 阅读 · 0 评论 -
Suffix Tree 后缀树
http://blog.youkuaiyun.com/g9yuayon/article/details/2574781在pongba的讨论组上看到一道Amazon的面试题:找出给定字符串里的最长回文。例子:输入XMADAMYX。则输出MADAM。这道题的流行解法是用后缀树(Suffix Tree)。这坨数据结构最酷的地方是用它能高效解决一大票复杂的字符串编程问题:在文本T里查询T是否包转载 2014-12-18 19:20:08 · 768 阅读 · 0 评论 -
卡特兰数
令h(0)=1,h(1)=1,catalan数满足递推式[1] :h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2)例如:h(2)=h(0)*h(1)+h(1)*h(0)=1*1+1*1=2h(3)=h(0)*h(2)+h(1)*h(1)+h(2)*h(0)=1*2+1*1+2*1=5另类递推式[2] :h(n转载 2014-12-21 21:20:12 · 388 阅读 · 0 评论 -
胜者树与败者树
http://blog.youkuaiyun.com/whz_zb/article/details/7425152胜者树与败者树 胜者树和败者树都是完全二叉树,是树形选择排序的一种变型。每个叶子结点相当于一个选手,每个中间结点相当于一场比赛,每一层相当于一轮比赛。 不同的是,胜者树的中间结点记录的是胜者的标号;而败者树的中间结点记录的败者的标号。转载 2014-12-21 22:34:32 · 385 阅读 · 0 评论 -
漫谈算法(四)分治算法 Divide and Conquer Algorithm
http://www.cnblogs.com/Gavin_Liu/archive/2011/04/15/2015469.html先看一段来自wikipedia的定义:http://en.wikipedia.org/wiki/Divide_and_conquer_algorithmDivide and conquer (D&C) is an important algorithm转载 2014-12-21 23:44:04 · 598 阅读 · 0 评论