二分法:每次判断mid所在的数段是否有序
class Solution {
public:
int search(vector<int>& nums, int target) {
int left=0,right=nums.size()-1;
int mid=(left+right)/2;
while(left<=right)
{
if(nums[mid]==target)
return mid;
else
{
if(nums[left]<nums[right])
{
if(nums[mid]<target)
left=mid+1;
else
right=mid-1;
}
else
{
if(nums[mid]<nums[right]) // the right is ordered
{
if(target>nums[mid]&&target<=nums[right])
left=mid+1;
else
right=mid-1;
}
else
{
if(target>=nums[left]&&target<nums[mid])
right=mid-1;
else
left=mid+1;
}
}
}
mid = (left + right )/2;
}
return -1;
}
};
本文介绍了一种在旋转排序数组中使用二分法查找特定元素的算法实现。该算法首先判断中间元素(mid)所在的部分是否有序,然后根据有序部分决定搜索的方向。文章通过具体的代码展示了这一过程。
810

被折叠的 条评论
为什么被折叠?



