分治法之二分查找

来源:互联网 发布:java ftpclient sftp 编辑:程序博客网 时间:2024/05/20 21:42

二分查找算法适用于在已经排好序的数组或者二叉树中,由于比较简单,故直接上代码。

代码如下:

//递归实现int binarySearch_recursion(const int arr[], const int left, const int right, const int key){    if(left > right)        return -1;    else    {        int mid = left + (right-left)/2;        if(arr[mid] == key)            return mid;        else if(arr[mid] > key)            return binarySearch_recursion(arr, left, mid-1, key);        else            return binarySearch_recursion(arr, mid+1, right, key);    }}int binarySearch_recursion(const int arr[], const int size, const int key){    return binarySearch_recursion(arr, 0, size-1, key);}//非递归实现int binarySearch_norecursion(const int arr[], const int size, const int key){    int left = 0;    int right = size - 1;    int mid = -1;    while(left <= right)    {        mid = left + (right-left)/2;        if(key == arr[mid])            return mid;        else if(key < arr[mid])            right = mid - 1;        else            left = mid + 1;    }}
0 0
原创粉丝点击