#include<iostream>
using namespace std;
class Solution {
public:
int Min(int *numbers,int len) {
int p = 0, q = len - 1,mid;
while (numbers[p]>=numbers[q]){
if (q - p == 1)
{
mid = q;
break;
}
mid = (p + q) / 2;
if (numbers[p] == numbers[q] && numbers[mid] == numbers[p]) return MinOrder(numbers,int p,int q);
else if (numbers[mid] >= numbers[p]) p = mid;
else if (numbers[mid] <= numbers[q]) q = mid;
}
return numbers[mid];
}
int MinOrder(int *numbers, int start, int end) {
int x = numbers[start];
for (int i = start+1; i <= end; i++){
if (x > numbers[i]) x = numbers[i];
}
return x;
}
};
int main()
{
int a[5] = {5,4,1,2,3};
int b[5] = {1,1,1,0,1};
Solution s;
cout << s.Min(a) << endl;
cout << s.Min(b) << endl;
return 0;
}
剑指offer11
最新推荐文章于 2022-10-24 23:54:44 发布