Search in Rotated Sorted Array

来源:互联网 发布:网盘管理系统 源码 编辑:程序博客网 时间:2024/06/17 02:53

Description:
Suppose a sorted array is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7 might become 4 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.

 #include <iostream> using namespace std; class Solution {public:    int search(int A[], int n, int target)    {        int first = 0, last = n;        while (first != last)        {            int mid = first + (last-first)/2;            if (target == A[mid])                return mid;            if (A[first] <= A[mid])            {                if (A[first] <= target && target < A[mid])                    last = mid;                else                    first = mid+1;            }            else            {                if (A[mid] < target && target <= A[last-1])                    first = mid+1;                else                    last = mid;            }        }        return -1;    } }; int main() {    int A[8] = {4,5,6,7,0,1,2,3};    int target,index;    cout<<"please input the number to search: ";    cin>>target;    Solution solution;    index = solution.search(A,8,target);    cout<<index;    cout<<endl;    return 0; }

这里写图片描述

0 0
原创粉丝点击