第1个回答 2013-01-04
int find(int arr[], int count, int findVal, int &pos)
{
if (arr == NULL || count < 1)
{
return -1;
}
int index = (count - 1) / 2;
int ret = -1;
if (arr[index] == findVal)
{
pos = index + 1;
return 0;
}
else if (arr[index] < findVal)
{
ret = find(&arr[index + 1], count - index - 1, findVal, pos);
pos += index + 1;
}
else
{
ret = find(arr, index, findVal, pos);
}
//else if (index == 0 || index == count - 1)
{
return ret ;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int arr[] = {10,12,14,16,18,20,22,24,26,28};
int pos = 0;
int re = find(arr,sizeof(arr)/sizeof(int),16,pos); //返回0找到,返回-1没找到
//结果 re = 0, pos = 4
}