作者:silence、2012年5月17日
本文参考:Google,数据结构(C语言)
本人声明:个人原创,转载请注明出处。
#include <cstdlib>
#include <iostream>
/*
Author : silence
Time : 2012/5/18
Description : 二分查找
*/
using namespace std;
//循环方式
int Bsearch(int a[],int key,int low,int high)
{
int mid ;
while(low <= high)//注意条件
{
mid = (low+high)/2;
if(key == a[mid]) return mid;
if(a[mid]>key) high = mid-1;//在低区搜索
else low = mid+1; //在低区搜索
}
return -1;//不存在
}
//递归方式
int search2(int a[],int key,int low,int high )
{
if(low <= high)
{
int mid;
mid = (low + high)/2;
if(key == a[mid]) return mid;
else if( key >a[mid]) return search2(a,key,mid +1,high);//在高区搜索
else return search2(a,key,low,mid-1); //在低区搜索
}
return -1;
}
int main(int argc, char *argv[])
{
int a[] = {1,2,3,4,5,6,7,8,9,10};
cout<<search2(a,3,0,9)<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
/*
输出结果
2
*/