您的位置:首页 > 其它

循环有序数组的查找

2015-07-16 22:14 260 查看
//有一个循环有序数组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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: