//有一个循环有序数组A,如何从这样的数组中寻找一个特定的元素呢?利用折半查找的思想
#include<iostream>
using namespace std;
int search(int data[],int low,int high,int key)
{
while(low<=high)
{
int mid=(high+low)/2;
if(key==data[mid])
return mid;
else
{
if(data[low]<=data[mid])
{
if(key>data[mid])
low=mid+1;
else
{
if(key>=data[low])
high=mid-1;
else
low=mid+1;
}
}
else
{
if(key<data[mid])
high=mid-1;
else
{
if(key<=data[high])
low=mid+1;
else
high=mid-1;
}
}
}
}
return -1;
}
void main()
{
int data[]={7,8,9,0,1,2,3,4,5,6};
int len=sizeof(data)/sizeof(int);
cout<<search(data,0,len-1,4)<<endl;
}
循环有序数组的查找
最新推荐文章于 2023-12-15 08:02:09 发布