旋转数组

生成旋转数组

假设需要将{1,2,3,4,5}左移2位生成{3,4,5,1,2}。可以将整个数组反转{5,4,3,2,1},再将后k个数,即2个反转,前n-k个数,即5-2=3个数反转,{3,4,5,1,2}。

基于非递减旋转数组的二分查找

对于数组a,low指向最低位,high指向最高位,mid=(low+high)/2。

情况1:a[mid]<a[high],说明mid位于右边的非递减数列,所以如果查找目标大小位于a[high]和a[mid]之间,low=mid+1,否则high=mid-1。

情况2:a[mid]>a[high],说明mid位于左边的非递减数列,所以如果查找目标大小位于a[low]和a[mid]之间,high=mid-1,否则low=mid+1。

情况3:a[mid]==a[high], 判断不了mid位于哪块数列,只能遍历,high--。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值