一些算法呀(一)
算法的总体思想:分+治+合
将要求解的较大规模的问题分割成k个更小规模的问题,对这k个子问题分别求解,如果子问题的规模仍然不够小,则再划分为k个子问题,如此递归地进行下去,直到问题规模足够小,很容易求出其解为止。将求出的小规模的问题的解合并为一个更大规模的问题的解,自底向上逐步求出原来问题的解。
递归函数:边界条件+递归方程
(1)二分搜索技术:
给定已排好序的n个元素a[0:n-1] ,现要在这n个元素中找出一特定元素x。
顺序搜索:O(n)
二分搜索的基本思想:将n个元素分成个数大致相同的两半,取a[n/2]与x作比较。如果x=[n/2],则找到x,算法终止;如果x<a[n/2],则只在数组a的左半部继续搜索x;如果x>a[n/2],则只在数组a的右半部继续搜索x。
template
int BinarySearch(Type a[],const Type& x,int n){
int left=0; int right=n-1;
while(left<=right){
int middle=(left+right)/2;
if(x==a[middle])
return(middle);
if(x>a[midddle])
left=middle+1;
else
right=middle-1;
}
return n-1;
}
时间复杂度O(logn)
(2)大整数乘法:
continuing

浙公网安备 33010602011771号