分治之二分检索

1.     伪代码

BinarySearch(T,l,r,x)

输入:有序数组T,下标从l到r;数x

输出:j  //如果x在T中,j为下标;否则为0

l<-1;r<-n

while l<=r do

  m<-

  if T[m]=x then return x

  else if T[m]>x r<-m-1

      else l<-m+1

return 0

 

2.     C/C++代码

 

/******************************************************

Function:BinarySearch

Description:二分检索

Input:有序数组T;数组的下界l和上界r;要检索的数组x

Output:x在T中的位置

*******************************************************/

int BinarySearch(int T[],int l,int r,int x){

    while(l<=r){

        int mid = (l+r)/2;

        if(T[mid]==x)return mid;

        else{

            if(T[mid]>x)r=mid-1;

            else l=mid+1;

        }

    }

    return 0;

}

 

 

 

3.     时间复杂度分析

分治之二分检索_第1张图片

 

 

 

你可能感兴趣的:(算法)