循环有序数组/旋转数组的二分查找
来源:互联网 发布:网络影视发行 编辑:程序博客网 时间:2024/04/18 09:11
类似问题:循环有序数组/旋转数组的最小值 《剑指offer》P66
#include <iostream>using namespace std;// 参考 http://blog.sina.com.cn/s/blog_a2498b5b01014bsg.html// 参考 http://blog.csdn.net/qq_33724710/article/details/51200889// 二分查找int binarySearch(int a[],int low,int high,int value){ if(low>high) return -1; int mid=(low+high)/2; if(value==a[mid]) return mid; else if(value>a[mid]) return binarySearch(a,mid+1,high,value); else return binarySearch(a,low,mid-1,value);}// 递归查找int searchRecursively(int a[],int low,int high,int value){ int mid=(low+high)/2; if(a[mid]>a[low]) //左有序 { if(a[low]<=value && value<=a[mid] ) //value在左边,直接二分查找 return binarySearch(a,low,mid,value); else //value在右边,递归查找 return searchRecursively(a,mid+1,high,value); } else //右有序 { if(a[mid]<=value && value<=a[high]) return binarySearch(a,mid,high,value); else return searchRecursively(a,low,mid-1,value); }}// 循环查找int searchCircularly(int* nums, int numsSize, int target){ int first = 0; int last = numsSize - 1; while (first <= last) { int mid = (last - first) / 2 + first; if (*(nums + mid) == target) return mid; else if (*(nums + first) <= *(nums + mid)) { if (*(nums + first) <= target && target < *(nums + mid)) last = mid - 1; else first = mid + 1; } else { if (*(nums + mid) < target && target <= *(nums + last)) first = mid + 1; else last = mid - 1; } } return -1;}int main(){ int a[]={3,4,5,6,7,8,9,0,1,2}; cout<<searchRecursively(a,0,9,0)<<endl; cout<<searchCircularly(a,9,0)<<endl; int ttt = 0; return 0;}
0 0
- 循环有序数组/旋转数组的二分查找
- 旋转有序数组的二分查找
- 旋转有序数组的二分查找
- 旋转有序数组的二分查找
- 有序 循环数组的二分查找
- 二分数组的扩展:二分查找循环有序数组
- 有序数组的二分查找
- 有序数组的二分查找
- 有序数组的二分查找
- (旋转数组问题)给定一个整数类型的循环有序数组,求循环数组的特定值,使用二分查找法(JAVA实现)
- 循环有序数组的查找
- 有序数组或者有序数组的旋转数组 查找最小值
- 旋转数组的二分查找
- 旋转数组的二分查找
- 旋转数组的二分查找
- 旋转数组的二分查找
- 旋转数组的二分查找
- 旋转数组的二分查找
- Android 使用socket实现两个真机之间的通信
- 开发实用整理
- 我的ffmpeg学习之路-源码编译
- C++智能指针
- 十大实用的开源电子商务工具推荐
- 循环有序数组/旋转数组的二分查找
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android学习——MultiAutoCompleteTextView组件
- Android学习网站
- hdu2987 map
- linux+php+mysql环境搭建
- 很全的正则验证方法
- [SVG笔记] viewBox、enable-background
- HttpRequestWrapper