#include "iostream"
#include <string>
#include "stack"
using namespace std;
int minInOrder(int* number, int index1, int index2);
int min(int *number,int length){
if (number == NULL || length <= 0)
throw new exception("Invalid parameters");
int index1 = 0;
int index2 = length-1;
int midIndex = index1;
while (number[index1]>=number[index2])
{
if (index2-index1==1)
{
midIndex = index2;
break;
}
midIndex = (index2 + index1) / 2;
if (number[index1] == number[index2] && number[midIndex] == number[index1])
return minInOrder(number, index1, index2);
if (number[midIndex] >= number[index1])
index1 = midIndex;
else if (number[midIndex] < number[index2])
index2 = midIndex;
}
return number[midIndex];
}
int minInOrder(int* number,int index1,int index2)
{
int result = number[index1];
for (int i = index1+1; i < index2;++i)
{
if (number[i] < result){
result = number[i];
}
}
return result;
}
int main()
{
int a[] = { 1, 1, 1, 0, 1 };
cout << min(a, 5);
system("pause");
return 0;
}
剑指offer面试题8:旋转数组的最小数字
最新推荐文章于 2024-04-25 07:07:39 发布