首页 > 代码库 > 循环数组查找一个数
循环数组查找一个数
网上看了有些代码有些错误,这里重新更正了下
思想:循环数组有一边是有序的,首先先判断哪一边有序(通过将当前mid点与最左边节点比较),然后查看是否在有序边上
代码如下
#include<iostream> #include<assert.h> using namespace std; int Binary_Search(int *a,int low,int high,int value) { int mid=(low+high)/2; if(a[mid] == value) return mid; if(a[mid]>=a[low]) //左有序 { if(a[low]<=value && value<a[mid]) //说明value在左边,直接二分查找 { return Binary_Search(a,low,mid,value); } else //value在右边 { return Binary_Search(a,mid+1,high,value); } } else //右有序 { if(a[mid]<=value && value<=a[high]) { return Binary_Search(a,mid,high,value); } else { return Binary_Search(a,low,mid-1,value); } } } int main() { int A[10] = {7,8,9,0,1,2,3,4,5,6}; int p = Binary_Search(A,0,9,0); cout<<p<<endl; return 0; }
循环数组查找一个数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。