<分区>
我尝试了以下代码来找出循环排序数组中的最小元素。但是当 low = 1 和 high =2 时它失败了,因为 mid 总是 1 并且 a[mid]=a[1] 总是大于 a[high]。
我在这里尝试使用二进制搜索来找到解决方案。
//finding the minim element in the cyclic sorted array
int arrC[]={10,13,1,3,4,5,8};
int low=0,high =6;
int mid=0,reset =1;
while (low < high)
{
mid = (low+ high)/2;
if (arrC[mid]>arrC[high])
{
low = mid;
}
else if (arrC[mid] < arrC[high])
{
high = mid;
}
}
printf("minimum element is %d",arrC[mid+1]);