分治法

概述:

  1. 将问题的实例划分为同一个问题的几个较小的实例,最好拥有同样的规模。
  2. 对这些较小的实例求解(一般使用递归,但问题规模足够小时,有时也会用另一个算法)
  3. 如果有必要的话,合并这些较小问题的解,已得到原始问题的解

合并排序:

  http://www.cnblogs.com/wanghui390/p/3594299.html

快速排序:

     http://www.cnblogs.com/wanghui390/p/3593854.html

二叉树遍历:

1. 求树的高度

1 算法 Height(T)
2       //递归计算二叉树的高度
3       //输入:一棵二叉树
4       //输出:T的高度
5     if T = 空 return -1
6    else return max{Height(TL), Height(TR)}+1

2.前,中,后序遍历二叉树

大整数乘法:

两个a,b整数的乘积,其中n是一个正的偶数。把a的前半部分记作a1,后半部分记为a0。对于b分别记作b1和b0.

c=a*b=(a1*10n/2+a0)*(b1*10n/2+b0)

=(a1*b1)10n+(a1*b0+a0*b1)10n/2+(a0*b0) = c2*10^n+c1*10^(n/2)+c0;

c2=a1*b1, c0=a0*b0,c1=(a1+a0)*(b1+b0)-(c2+c0)

如果n/2也是偶数,我们可以应用相同的方法计算c2,c0和c1;

posted @ 2014-04-01 15:58  soul390  阅读(173)  评论(0)    收藏  举报