问题描述: 输入一个整数,返回其二进制表示中最低的一位为1的下标值。
很多CPU都在硬件层面直接提供该指令,例如,i386的BSF指令。但是,如果硬件没有提供该指令,又当如何。来看kernel中的算法:
应用分治思想进行依序判断..... 1 int __ffs(int x) 2 ...
分类:
其他好文 时间:
2014-07-22 23:00:13
阅读次数:
336
从一个序列里面选择第k大的数在没有学习算法导论之前我想最通用的想法是给这个数组排序,然后按照排序结果返回第k大的数值。如果使用排序方法来做的话时间复杂度肯定至少为O(nlgn)。问题是从序列中选择第k大的数完全没有必要来排序,可以采用分治法的思想解决这个问题。Randomize
select 算法....
分类:
其他好文 时间:
2014-05-07 19:23:35
阅读次数:
394
1 #include 2 #include 3 4 void MerageSort(int *A,
int low, int high); 5 void Merge(int *A, int low, int middle, int high); 6 7 int
main() 8 { ...
分类:
其他好文 时间:
2014-05-04 20:44:56
阅读次数:
417
转:初期: 一.基本算法: (1)枚举. (poj1753,poj2965)
(2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj3295)
(6)模拟法.(poj1068,poj2632,po...
分类:
其他好文 时间:
2014-05-02 00:00:49
阅读次数:
449
一切计算机问题,解决方法可以归结为两类:分治和封装。分治是减层,封装是加层。动态规划问题同样可以用这种思路,分治。它可以划分为多个子问题解决,那这样是不是用简单的递归就完成了?也许是的,但是这样会涉及太多的不便的操作。因为子问题有重叠!针对这种子问题有重叠的情况的解决,就是提高效率的关键。所以动态规...
分类:
其他好文 时间:
2014-05-01 10:03:00
阅读次数:
449
strassen算法可以看做是分治递归法求解矩阵乘法的改进。
利用分治递归法求解矩阵乘法的过程大致:
矩阵C = A * B(A、B、C都是n x n矩阵)
可以发现(A11 * B11)、(A12 * B21)……等子矩阵的乘法运算需要继续递归。上面有8个乘法,所以需要递归8次。
时间复杂度关系公式 T(n) = 8T(n/2) + O(n^2),这里8T(n/2)是8次递归...
分类:
其他好文 时间:
2014-05-01 08:43:52
阅读次数:
549
主定理
主定理最早出现在《算法导论》中,提供了分治方法带来的递归表达式的渐近复杂度分析。
规模为n的问题通过分治,得到a个规模为n/b的问题,每次递归带来的额外计算为c(n^d)
T(n) <= aT(n/b)+c(n^d)
那么就可以得到问题的复杂度为:...
分类:
其他好文 时间:
2014-04-30 22:44:38
阅读次数:
435
这题解法怎么说呢,因为我是把行数逐步除以2暴力得到的答案,所以有点二分的意思,但是昨天琦神说是有点像分治的意思,反正总的来说:就是从大逐步细化找到最优答案。
但是昨晚傻B了,靠!多写了点东西,然后就错了,刚才一练习,拿昨晚的代码一看,就把6行代码删去就过了,靠!昨晚应该是脑子进水了!!!!!
昨晚的代码:
#include
#include
#include
#include
#in...
分类:
其他好文 时间:
2014-04-29 13:28:20
阅读次数:
387
一.基本算法: (1)枚举. (poj1753,poj2965)
(2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj3295)
(6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)二.图...
分类:
其他好文 时间:
2014-04-29 11:27:47
阅读次数:
489
利用挖坑填数+分治实现的快排代码如下:import
java.io.BufferedReader;import java.io.IOException;import
java.io.InputStreamReader;import java.util.Formatter;import java.ut...
分类:
其他好文 时间:
2014-04-29 10:33:46
阅读次数:
404