1 #include "stdafx.h" 2 #include3 #include 4 #include 5 using namespace std; 6 7 /* 8 旋转数组的最小数字 9 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转,输入10 一个递增排序的数组的一个旋转。输出旋转数组的最小元素。例如数组{3,4,5,1,2}11 为{1,2,3,4,5}的一个旋转,该数组的最小值为1.12 思路:遍历一遍找最小值.时间复杂度显然是O(n),这个思路显然达不到要求.13 */14 15 int Min(int *arr,int beg,int end)16 {17 18 if(arr==NULL)19 throw new std::exception("Invalid parameters");20 if(arr[beg] arr[i])32 result = arr[i];33 }34 return result;35 }36 if(beg+1==end)37 {38 return arr[end];39 }40 41 if(arr[mid] < arr[beg])42 {43 return Min(arr,beg,mid);44 }45 if(arr[mid] > arr[end])46 {47 return Min(arr,mid,end);48 }49 return -1;50 }51 52 int _tmain(int argc, _TCHAR* argv[])53 { 54 int arrlist[] = { 2,3,4,5,6,7,1};55 //int arrlist[] = {1,0,1,1,1};56 //int arrlist[] = {1,1,1,0,1};57 int len = sizeof(arrlist)/sizeof(int);58 cout< <