摘要: 分治算法:用分治策略实现n个元素进行排序的方法。基本思想:将待排序元素分成大小大致相同的两个子集合,分别对两个子集合进行排序,最终排好序的子集合合并成所要求的排好序的集合。源码:/* * mergeSort.cpp * 合并排序算法,算法导论P.17 * Created on: 2011-12-21 * Author: LiChanghai *///#include <iostream>#include <vector>#include <iostream>#include <iterator>using namespace std;#defin 阅读全文
posted @ 2012-10-15 22:29 xingoo 阅读(520) 评论(0) 推荐(0)
摘要: 大整数乘法 分析算法计算复杂性时,加法乘法当做基本运算来处理,即一次加法或者乘法当做一个仅取决于计算机硬件处理速度的常数。正常的二进制整数X,Y要用O(n2)才能算出。如果分割为两段,X=A2^(n/2)+B,Y=C2^(n/2)+D。XY = (A2^(n/2)+B)(C2^(n/2)+D)=AC2^n+(AD+BC)2^(n/2)+BD要进行4次N/2位整数... 阅读全文
posted @ 2012-10-15 21:52 xingoo 阅读(1707) 评论(0) 推荐(0)
摘要: 分治法的基本思想:将一个规模为n的问题,分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。递归的解这些子问题,然后将各个子问题的解合并得到原问题的解。经典例子:二分搜索算法基本思想:1 将n个元素分成个数大致相同的两半,取n/2与x进行比较。2 如果找到,则终止,返回。3 如果小于n/2,则在小半部分继续查找。4 如果大于n/2,则在大半部分继续查找。算法描述代码:#include <iostream>using namespace std;template <class Type>int BinarySearch(Type a[],const Type & 阅读全文
posted @ 2012-10-15 21:18 xingoo 阅读(780) 评论(0) 推荐(0)