递归与分治基本概念
什么是递归?
直接或间接的调用自身的算法称为递归算法。
===================================================
分治法的基本思想:
将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立与原问题相同。递归的解这些子问题,然后将各子问题的解合并得到原问题的解。
===================================================
描述递减序列进行二分搜索的基本思想,并给算法:
基本思想:首先将待搜索的元素v与数组的中间元素A[n/2]进行比较,如果v> A[n/2],则在前半部分的
元素中搜索v,若v=A[n/2],则搜索成功,否则在后半部搜索。
递归算法:
int Binarysearch(int A[], int left, int right, int v){
int mid;
if(left <= right){
mid = int((left + right) / 2);
if(v == A[mid]) return mid;
else if(v > A[mid]) return BinarySearch(A, left, mid - 1, v);
else return BinarySearch(A, mid + 1, right, v);
}
else return -1;
}