算法基础
michael_jin92
目前在互联网公司从事Android端的开放
展开
-
分治与递归
分治法的基本思想:将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。递归地解这些问题,然后将各个子问题的解合并成原问题的解。它的一般的算法设计模式如下:divide-and-conquer(P) { if ( | P | adhoc(P); //解决小规模的问题 divide P into smaller subinstancesP原创 2013-05-14 19:06:43 · 3295 阅读 · 0 评论 -
递归算法时间复杂度
求递归算法时间复杂度:递归树 递归算法时间复杂度的计算方程式一个递归方程: 在引入递归树之前可以考虑一个例子:T(n) = 2T(n/2) + n2 迭代2次可以得:T(n) = n2 + 2(2T(n/4) + (n/2) 2) 还可以继续迭代,将其完全展开可得:T(n) = n2 + 2((n/2) 2 + 2((n/22)2 + 2((n/23)原创 2013-05-14 19:18:28 · 1569 阅读 · 0 评论 -
二分法查找
问题:给定已按升序排好序的n个元素a[0:n-1],现要在这n个元素中找出一特定元素x。分析:如果n=1即只有一个元素,则只要比较这个元素和x就可以确定x是否在表中。因此这个问题满足分治法第一个适用条件。比较x和a的中间元素a[mid],若x=a[mid],则x在a中位置就是mid;如果xa[mid],所以我们只要在a[mid]的后面查找x即可。无论是在前面还是在后面查找x,其方法原创 2013-05-14 19:51:35 · 1413 阅读 · 0 评论 -
大整数乘法
通常,在分析一个算法的计算复杂性时,都将加法和乘法运算当作是基本运算来处理,即将执行一次加法或乘法运算所需的计算时间当作一个仅取决于计算机硬件处理速度的常数。这个假定仅在参加运算的整数能在计算机硬件对整数的表示范围内直接处理时才是合理的。然而,在某些情况下我们要处理很大的整数,它无法在计算机硬件能直接表示的整数范围内进行处理。若用浮点型来表示它,则只能近似地表示它的大小,计算结果中的有效数字也受到原创 2013-05-14 21:09:31 · 2040 阅读 · 0 评论