【每日算法】二分查找算法

来源:互联网 发布:宇多田光知乎 编辑:程序博客网 时间:2024/05/21 09:03

代码:

//递归版本int binarysearch(int arr[], int left, int right, int x){if (NULL != arr&&left <= right){int mid;mid = (left + right) / 2;if (arr[mid] = x)return mid;else if (arr[mid] > x)return binarysearch(arr, left, mid - 1, x);elsereturn binarysearch(arr, mid + 1, right, x);}return -1;}//非递归版本int binarysearch(int arr[], int left, int right, int x){if (NULL == arr || left > right)return -1;int mid;while (left <= right){mid = (left + right) / 2;if (arr[mid] == x)return mid;else if (arr[mid] > x)right = mid-1;elseleft = mid+1;}return -1;}

举例子:

1、旋转数组中最小的数字(剑指offer)、循环有序数组中查找指定元素

2、数组中的元素有重复,要找出x首次出现的位置

 
原创粉丝点击