题目描述
一个有序循环数组array[],不知其升序还是降序,也不知其起点在哪里。请编程寻找指定元素。
思路
- 先通过中间值和最后一个或者第一个元素比较,找出局部有序范围,再通过二分查找局部有序段
1 | int sortArrFindOne(int arr[], int low, int high, int target) { |
- 找局部有序(二分递归查找)
1
2
3
4
5
6
7
8
9int find(int arr[], int low, int high, int target) {
int mid = (high - low) / 2 + low;
if (arr[mid] == target) return mid;
if (arr[mid] < target) {
return find(arr, mid + 1, high, target);
} else {
return find(arr, low, mid - 1, target);
}
}
赏
使用支付宝打赏
使用微信打赏
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏