二分查找的递归算法
二分查找的递归算法
- 算法名称:find
- 算法功能:
- 在n个整数的有序数组a中找x
- 返回x在a中下表;若找不到,返回-1
- 用i,j表示待查找的区间
- 算法描述:
find(int a[],int i,int j,int x) n=j-i+1 如果n==0 返回-1 否则 m=(i+j)/2 如果x==a[m] return m 否则(2) 否则(2) 如果x<a[m] k=find (a,i,m-1,x) 返回k//不能丢return 否则 k=find (a,m+1,j,x) 返回k
- 二分查找递归源程序:
1 int find(int a[],int i,int j,int x) 2 { 3 int m,k; 4 n=i+j-1; 5 if(n==0) 6 { 7 return -1; 8 } 9 else 10 { 11 m=(i+j)/2; 12 if(a[m]==x) 13 return m; 14 15 else if(x<a[m]) 16 { 17 k=find(a[],i,m-1,x); 18 return k; 19 } 20 else if(x>a[m]) 21 { 22 k=find(a[],m+1,j,x); 23 return k; 24 } 25 26 } 27 }