旋转数组中查找指定元素

如题,在旋转数组中查找指定元素,考虑到多种情况,网上的方法大部分没有考虑,当low,high,mid三个值相等时的情况。 代码如下:

int findAll(int A[],int low,int high,int value)//当三个相等时,,查找全部元素的函数。{for(int i = low;i < high;i++){if(A[i]==value)return i;}return -1;}int find(int A[],int n,int value)//查找旋转数组指定元素的函数{ int low=0; int high=n-1; int mid; while(low<=high) { mid=low+(high-low)/2; if(A[mid]==value)return mid; if(A[low]==A[mid]&&A[mid] == A[high])//三者相等时,完全遍历查找 {return findAll(A,low,high,value); } if(A[low]<=A[mid])//左边有序 {if(A[mid]>value&&value>=A[low]){high=mid-1;}else{low=mid+1;} }else if(A[mid]<=A[high])//右边有序 {if(A[mid]<value&&A[high]>=value){low=mid+1;}else{high=low-1;} } }return -1;}

勇敢的冷静的理智的去接受失败,有时不但是必要的,而且是很有必要的。

旋转数组中查找指定元素

相关文章:

你感兴趣的文章:

标签云: