分治法的基本思想是将一个规模为n的问题分级为k个规模较小的子问题,这些子问题互相独立,且与原问题相同。递归的解这些子问题,然后将各子问题的解合并得到原问题的解,二分查找是分治策略的一个典型例子,分置策略的典型例子还有就是合并排序(在排序算法里有合并排序的c语言描述),下面给出二分查找的代码:
#include<stdio.h>
int main()
{
int a[10],i;
int binarysearch(int a[],int n,int x);
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("%d/n",binarysearch(a,10,3));//找a数组中的数字3的位置
return 0;
}
int binarysearch(int a[],int n,int x)
{
int left=0,right=n-1,middle;
while(left<right)
{
middle=(left+right)/2;
if(x==a[middle])return(middle);
else if(x>a[middle])left=middle+1;
else right=middle-1;
}
}