二分查找

来源:互联网 发布:java nexttoken 编辑:程序博客网 时间:2024/06/05 10:27

循环

int BinSearch(int a[], int n, int key){    int low = 0, high = n - 1, mid;    while (low <= high)    {        if (a[low] == key)            return low;        if (a[high] == key)            return high;        mid = low + (high - low) / 2;//而不是(low+high)/2,是为了防止溢出        if (a[mid] == key)            return mid;        else if (a[mid] < key)            low = mid + 1;        else            high = mid - 1;    }    if (low > high)        return -1;}

递归

int BinSearch(int a[],int left, int right, int key){    int mid = left + (right - left) / 2;    if (left > right)        return -1;    else    {        if (a[mid] == key)            return mid;        else if (a[mid] > key)            return BinSearch(a, left, mid - 1, key);        else            return BinSearch(a, mid+1, right, key);    }}
0 0
原创粉丝点击