首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在旋转的排序数组中搜索数字

在旋转的排序数组中搜索数字是一个经典的二分查找问题。在这个问题中,给定一个旋转的排序数组和一个目标数字,要求判断目标数字是否在数组中出现,并返回其索引位置。

旋转排序数组是一个升序排列的数组在某个位置上被旋转,例如4,5,6,7,0,1,2。

要解决这个问题,可以使用二分查找算法。具体步骤如下:

  1. 定义左右指针,分别指向数组的起始和结束位置。
  2. 在每次循环中,计算中间位置的索引,并判断中间位置的值和目标数字的大小关系。
  3. 如果中间位置的值等于目标数字,则直接返回中间位置的索引。
  4. 如果中间位置的值小于目标数字,则说明目标数字在右半部分,将左指针移动到中间位置的右侧。
  5. 如果中间位置的值大于目标数字,则说明目标数字在左半部分,将右指针移动到中间位置的左侧。
  6. 重复上述步骤,直到左指针大于右指针或者找到目标数字。

以下是一个Python实现的示例代码:

代码语言:python
代码运行次数:0
复制
def search(nums, target):
    left, right = 0, len(nums) - 1
    while left <= right:
        mid = (left + right) // 2
        if nums[mid] == target:
            return mid
        elif nums[mid]< target:
            left = mid + 1
        else:
            right = mid - 1
    return -1

这个算法的时间复杂度为O(log n),其中n是数组的长度。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券