Search in Rotated Sorted Array 问题

problem:

Suppose a sorted array is rotated at some pivot unknown to you beforehand.

(i.e.,0 1 2 4 5 6 7might become4 5 6 7 0 1 2).

You are given a target value to search. If found in the array return its index, otherwise return -1.

You may assume no duplicate exists in the array.

Hide Tags

ArrayBinary Search

在把一个排好序的序列旋转一次,再搜索一个给定值,考的是二分搜索的变种

thiking:

(1)利用二分 搜索:经典二分搜索算法如下

int bsearch(int a[], int left, int right, int key){if (left > right)return -1;int mid = left + (right – left) / 2;if (a[mid] == key)return mid;else if (a[mid] < key)return bsearch(a, mid + 1, right, key);elsereturn bsearch(a, left, mid – 1, key);}(2)这里把原序列进行了旋转,,在判断下一个搜索区间时要稍加考量

code:

class Solution {public:int search(int A[], int n, int target){if(0 == n) return -1;int left = 0;int right = n – 1;while(left <= right){int midle = (left + right) >> 1;if(A[midle] == target) return midle;if(A[left] <= A[midle]){if(A[left] <= target && target < A[midle]){right = midle – 1;}elseleft = midle + 1;}else{if(A[midle] < target && target <= A[right])left = midle + 1;elseright = midle – 1;}}return -1;}};

不义而富且贵,于我如浮云。

Search in Rotated Sorted Array 问题

相关文章:

你感兴趣的文章:

标签云: