题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
#include <exception>
#include <iostream>
using namespace std;
int Min(int *numbers, int length) {
if (numbers == NULL || length <= 0)
return -1;
int index1 = 0;
int index2 = length - 1;
int indexmid = 0;
while (numbers[index1] >= numbers[index2]) {
if (index2 - index1 == 1 || index2 - index1 == 0) {
indexmid = index2;
break;
}
indexmid = (index1 + index2) / 2;
if (numbers[index1] == numbers[index2] &&
numbers[indexmid] == numbers[index1]) {
int i = index1 + 1;
for (i = index1 + 1; i <= index2; i++) {
if (numbers[i] < numbers[indexmid])
indexmid = i;
}
}
if (numbers[indexmid] >= numbers[index2])
index1 = indexmid;
else if (numbers[indexmid] <= numbers[index2])
index2 = indexmid;
}
return numbers[indexmid];
}
int main() {
int arr[] = {1, 0, 1, 1, 1};
int length = 5;
int result = Min(arr, length);
cout << result << endl;
return 0;
}