就是二叉查找。
vector<int> searchRange(int A[], int n, int target) {
int i=0,j=n-1;
vector<int> ret;
while(i<=j)
{
int mid = (i+j)>>1;
if (A[mid]>=target)
j = mid - 1;
else
i = mid + 1;
}
if (A[i]==target)
{
ret.push_back(i);
i=0;j=n-1;
while(i<=j)
{
int mid = (i+j)>>1;
if (A[mid]>target)
j = mid - 1;
else
i = mid + 1;
}
ret.push_back(j);
}
else
{
ret.push_back(-1);
ret.push_back(-1);
return ret;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int arr[7];
for (int i=0;i<7;i++)
{
//cin>>arr[i];
arr[i] = i;
}
int value;
vector<int> ret;
//while(cin>>value)
//{
//ret.clear();
cin>>value;
ret=searchRange(arr,7,value);
vector<int>::iterator iter=ret.begin();
while(iter!=ret.end())
{
cout<<*iter<<" ";
iter++;
}
cout<<endl;
//}
//while(cin>>value)
// cout<<search(arr,1,value)<<endl;
system("pause");
return 0;
}
上面的代码怎么也没调通,晕~