您的位置:首页 > 其它

写正确程序需要注意的地方:一个数组是有一个递减数列座椅若干位形成的,在这种数组中查找某一个数。

2014-03-04 12:13 465 查看
//4,3,2,1,10,9,8,7,6,5
int searchInRotateSortedArray(int* arr, int count, int value)
{
if (count<=0 || arr==NULL)
return -1;

int mid;
int left=0;
int right=count-1;
while (left<=right)
{
//left和right为查找值的情况比较难控制。在此直接给出结果。
if (arr[left]==value)
return left;
else if (arr[right]==value)
return right;

mid=(left+right)/2;
if (arr[mid]==value)
{
return mid;
}
else if (arr[mid]<value)
{
//value 和 mid大小顺序与正常的排列颠倒
if (arr[mid]<arr[left] && arr[mid]<arr[right]
&& value>arr[left] && value>arr[right])
left=mid+1;
else
right=mid-1;
}
else if (arr[mid]>value)
{
//value 和 mid大小顺序与正常的排列颠倒
if (arr[mid]>arr[left] && arr[mid]>arr[right]
&& value<arr[left] && value<arr[right])
right=mid-1;
else
left=mid+1;
}
}
return -1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐