有一由小到大排列的数组m[],数组大小为n,请用二分法查找算法找出与关键数key相等的元素,若查找成功返回元素在数组中的位置,没找到返回-1.
1 // 二分查找.cpp
2
3 #include "stdafx.h"
4 #include <string>
5
6 int search(int m[],int key,int low,int high)
7 {
8 int mid=(low+high)/2;
9 if (low>high)
10 return -1;
11 if (key==m[mid])
12 return mid;
13 else if (key<m[mid])
14 return search(m,key,low,mid-1);
15 else
16 return search(m,key,mid+1,high);
17 }
18
19 void main()
20 {
21 int a[]={1,2,5,7,9,12,16};
22 int i,len;
23 len=sizeof(a)/sizeof(a[0])-1;
24 i=search(a,12,0,len);
25 printf("%d\n",i);
26 }
来源:https://www.cnblogs.com/xingele0917/archive/2012/10/04/2711628.html