在一个有序的旋转数组中,查找给定值
来源:互联网 发布:金蝶引出数据失败原因 编辑:程序博客网 时间:2024/04/30 04:45
思路一:
因为数组有序,经过旋转后,数组保持局部有序。因此可以用二分查找。
bool search(int A[], int n, int target) { int start=0; int end=n-1; while(start<=end){ int mid=(start+end)>>1; if(target==A[mid]) return true; if(A[mid]==A[start]&&A[mid]==A[end]){ //此时给定值可能在左边,也可能在右边。因此要遍历整个数组。 或者++start,--last. /* for(int i=0;i<n;i++){ if(target==A[i]) return true; } return false;*/ start++; end--; }else if(A[start]<=A[mid]){ //左边有序 if(target<A[mid]&&target>=A[start]) end=mid-1; else start=mid+1; }else if(A[mid]<=A[end]){ //右边有序 if(target>A[mid]&&target<=A[end]) start=mid+1; else end=mid-1; } } return false; }
阅读全文
0 0
- 在一个有序的旋转数组中,查找给定值
- 在一个旋转有序数组中,查找最小的数
- 在一个循环有序数组里查找一个给定的值是否存在
- 给定一个经过一次旋转的有序数组,从中查找一个值,若存在返回它的索引,不存在返回-1,假定数组存在重复元素
- (旋转数组问题)给定一个整数类型的循环有序数组,求循环数组的特定值,使用二分查找法(JAVA实现)
- 求旋转有序数组的最小值和在旋转数组中查找
- 给定一个经过一次旋转的有序数组,从中查找一个值,若存在返回它的索引,不存在返回-1
- 在一个两段有序的数组中查找
- 在有序递增数组中查找一个缺少的数字
- 在一个旋转过的有序数组上实现二分查找
- 在一个旋转过的有序数组上实现二分查找 收藏
- 在一个循环有序的数组里查找特定值
- 在旋转后的有序数组中查找元素,要求O(logn)的时间复杂度
- 在旋转后的有序数组中查找元素,要求O(logn)的时间复杂度
- 查找有序数组中等于给定值的两个数
- 二维有序数组查找给定值
- 其他题目---在有序旋转数组中找到一个数
- 在有序旋转数组中找到一个数
- Machine Learning 学习 之 RBF网络
- 【服务器】owncloud的WebDAV
- CSS3 pointer-events:none应用举例及扩展
- 人工智能算法--KNN算法(C++实现)
- 字符串的选择性拷贝
- 在一个有序的旋转数组中,查找给定值
- Bribe the Prisoners(Easy)
- Machine Learning 学习 之 Qleaning 学习
- 基本运算符
- Android--(14)--通过安卓选择器来修改actionbar的样式与字体样式
- sizeof的特点和用法
- c语言之最大数/阶乘求和、加密
- Machine Learning 学习之朴素贝叶斯
- 初学C语言感想。