博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Search in Rotated Sorted Array
阅读量:6093 次
发布时间:2019-06-20

本文共 1660 字,大约阅读时间需要 5 分钟。

首先利用二分查找的方法找到最小值,然后在以最小值为分界的两块分别进行二分搜索。

1 int findPos(int A[], int left, int right){ 2     if(left > right) 3         return -1; 4     int mid = (left+right)/2; 5     int result; 6     if(A[left] > A[mid]){ 7         result = findPos(A, left, mid-1); 8         if(result == -1) 9             return mid;10         else11             return A[result]
right)23 return -1;24 int mid = (left+right)/2;25 if(A[mid] == target)26 return mid;27 else if(A[mid] < target)28 return bsearch(A, mid+1, right, target);29 else30 return bsearch(A, left, mid-1, target);31 }32 int search(int A[], int n, int target) {33 int pos = findPos(A, 0, n-1);34 int result = bsearch(A, 0, pos-1, target);35 if(result != -1)36 return result;37 return bsearch(A, pos, n-1, target);38 }

 另外一种方法是直接二分,不过增加了一些判断,比上述代码要简练。

1     int search(int A[], int n, int target) { 2         if(n == 0) 3             return -1; 4         int l = 0, r = n-1, m; 5         while(l <= r){ 6             m = (l+r)/2; 7             if(A[m] == target) 8                 return m; 9             else if(A[m] > A[l]){10                 if(target < A[m] && target >= A[l])11                     r = m-1;12                 else13                     l = m+1;14             }15             else if(A[m] < A[l]){16                 if(target > A[m] && target <= A[r])17                     l = m+1;18                 else19                     r = m-1;20             }21             else22                 l++;23         }24         return -1;25     }

 

转载于:https://www.cnblogs.com/waruzhi/p/3348696.html

你可能感兴趣的文章
PHP接入支付宝有密退款接口
查看>>
Android系统开发剑走偏锋之修改系统属性(广播大法好)
查看>>
KVM虚拟机IO性能调优
查看>>
Angular directive 实例详解
查看>>
javascript 模板引擎系列文章(一)
查看>>
AndroidStudio NDK开发最佳入门实践
查看>>
w3schools网站的HTML教程之HTML基础
查看>>
forever 启动附带 --harmony 参数
查看>>
php实现简单验证码识别
查看>>
开始的开始
查看>>
多线程并发相关的几个重要基础知识点解析
查看>>
KubeCon2018西雅图在前线(一):云原生概念已经深入人心
查看>>
Git 发布网站程序
查看>>
海量智能元数据管理系统实现解析
查看>>
NumPy Cookbook 带注释源码 六、NumPy 特殊数组与通用函数
查看>>
好友辞职的一些想法
查看>>
JS之原生JS获取表单得所有值
查看>>
JDBC Driver接口连接数据库,实际开发基本不用
查看>>
Golang 中的并发限制与超时控制
查看>>
【Tip】如何让引用的dll随附的xml注释文档、pdb调试库等文件不出现在项目输出目录中...
查看>>