#include<iostream> using namespace std; int search(int a[],int n,int e) { if(e==a[0])return 0; //计算循环右移了多少位 int low=0,high=n-1,mid; while(a[low]>a[high]) { mid=(low+high)/2; if(a[mid]>a[low])low=mid+1; else high=mid-1; } //折半查找 if(e>a[0]) { low=0;high=high; while(low<=high) { mid=(low+high)/2; if(e==a[mid])return mid; else if(e>a[mid])low=mid+1; else high=mid-1; } } else { low=high+1;high=n-1; while(low<=high) { mid=(low+high)/2; if(e==a[mid])return mid; else if(e>a[mid])low=mid+1; else high=mid-1; } } return -1; } int main() { int A[100]; int i; for(i=0;i<31;i++)A[i]=110+i; for(;i<100;i++)A[i]=i; cout<<search(A,100,A[80])<<endl; }
整数型的有序递增数组循环右移x位后,查找指定整数 算法
最新推荐文章于 2021-02-01 08:04:40 发布