题目要求:输出旋转数组的最小数字
解答:(没有考虑特殊情况的粗略答案)
#include <iostream>
using namespace std;
void PrintMinNumber(int* arr, int length) {
int i = 0;
for (;i < length; i++) {
if (arr[i] < arr[0]) {
cout << arr[i] << endl;
break;
}
}
if (i == length)
cout << arr[0] << endl;
}
void PrintMinNumber_Way2(int* arr, int length) {
int index1 = 0;
int index2 = length - 1;
int index_mid = index1;
while (arr[index1]>=arr[index2]) {
if (index2 - index1 == 1)
{
index_mid = index2;
break;
}
index_mid = (index1 + index2) / 2;
if (arr[index_mid] >= arr[index1])
index1 = index_mid;
else
index2 = index_mid;
}
cout << arr[index_mid] << endl;
}
int main() {
int arr[] = { 5,6,1,2,3,4 };
PrintMinNumber_Way2(arr, 6);
while (1);
return 0;
}