Search in Rotated Sorted Array (LeetCode)
Question:
https://oj.leetcode.com/problems/search-in-rotated-sorted-array/
解答:
同样的二分法查找。只是比排序数列多一个判断。对于rotated sorted array, 取其中点分为左右两个数列,其中必有一个是排序的,另外一个是rotated。所以只要对那个已经排序的数列判断target是否在当前数列范围内,如果不是,则需继续二分判断target是否在另外一个数列中。
int search(int A[], int s, int e, int target) { if (s == e) return (A[s]==target ? s : -1); int middle = (s+e)/2; if (A[s] < A[middle]) { if (A[s] <= target && target <= A[middle]) return search(A, s, middle, target); else return search(A, middle+1, e, target); } else { if (A[middle+1] <= target && target <= A[e]) return search(A, middle+1, e, target); else return search(A, s, middle, target); } }
浙公网安备 33010602011771号