有序数组查找

问题:给定某递增数组,在其中找到某值。

思路:有序数组采用二分查找法,时间复杂度为O(lgn).

//传入数组指针,数组大小,以及要查找的ke
int BinarySearch(int *A, int m, int key)
{
    int begin = 0;
    int end = m - 1;
    while(begin <= end)
    {
                int min = begin + (end - begin)/2;
                if (A[min] > key){            //在一半以前
                   end = min - 1;
                }
                else if(A[min] < key){        //在一半以后
                     begin = min + 1;     
                }else{                        //相等则找到返回
                      return min;
                }
    }
    return -1;//找不到返回错误
}



你可能感兴趣的:(有序数组查找)