二分查找的递归算法

二分查找的递归算法


 

  • 算法名称: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 }

 

posted @ 2018-01-18 16:33  CloseAI  阅读(594)  评论(0)    收藏  举报