好久没有更新了,看看“每天AC一道题”的誓言,真是有些惭愧。
不过最近确实没有精力,感冒发烧的昨天才彻底好。
不多说了,上题目:
我的答案:
#include<stdio.h>
int cyclicMin(int data[],int length);
int main()
{
int data[] = {8,10,15,2,6};
int rel = -1;
rel = cyclicMin(data,sizeof(data) / sizeof(data[0]));
printf("The minimum is %d\n",data[rel]);
return 0;
}
int cyclicMin(int data[],int length)
{
int first = 0;
int last = length - 1;
int middle = (first + last) / 2;
if(data[first] > data[last])
{
while(last > first)
{
middle = (first + last) / 2;
if(data[middle] > data[last])
{
first = middle + 1;
}
else
{
last = middle;
}
printf("middle == %d\n",middle);
}
return first;
}
else
return 0;
}
/*
int cyclic_min(int x[],int n)
{
int left = 0;
int right = n - 1;
int mid;
while(left < right)
{
mid = (left + right) / 2;
if(x[mid] < x[right])
right = mid;
else
left = mid + 1;
}
return left;
}
*/
一开始觉得终止条件不会写,参考了答案才写出来。