描述

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

2.1 数组 5

(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.


binary.h

#include<iostream>#include<assert.h>classSolution{public:intsearch(intA[],intn,intvalue){assert(A);intstart=0;intend=n-1;while(start<=end){intmid=(end-start)/2+start;if(A[mid]==value)returnmid;if(A[start]<=A[mid]){//ordersif(value<A[mid]&&value>=A[start])end=mid-1;elsestart=mid+1;}else{//disorderif(value>A[mid]&&value<=A[end])start=mid+1;else{end=mid-1;}}}return-1;}};

binary.cpp

#include"binary.h"usingnamespacestd;intmain(){inta[9]={7,8,9,0,1,2,4,5,6};Solutions1;cout<<s1.search(a,sizeof(a)/sizeof(a[0]),7)<<endl;cout<<s1.search(a,sizeof(a)/sizeof(a[0]),8)<<endl;cout<<s1.search(a,sizeof(a)/sizeof(a[0]),9)<<endl;cout<<s1.search(a,sizeof(a)/sizeof(a[0]),0)<<endl;cout<<s1.search(a,sizeof(a)/sizeof(a[0]),1)<<endl;cout<<s1.search(a,sizeof(a)/sizeof(a[0]),2)<<endl;cout<<s1.search(a,sizeof(a)/sizeof(a[0]),4)<<endl;cout<<s1.search(a,sizeof(a)/sizeof(a[0]),5)<<endl;cout<<s1.search(a,sizeof(a)/sizeof(a[0]),6)<<endl;cout<<s1.search(a,sizeof(a)/sizeof(a[0]),3)<<endl;system("pause");return0;}

运行结果:


以下是leetcode_cpp的代码:


我自己编的程序基本上和他给的一样,说明自己还是有进步的,嘻嘻。。。。继续加油!


<完>