C++,已有一按从小到大次序排序好的数组,现输入一数,要求,用折半查找法找出该数在数组中的位置

数组值为:10,12,14,16,18,20,22,24,26,28
输入数: 16

第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

}
第2个回答  2013-01-05
搜狗输入法,按CTRL +上的文件CTRL +空格可以快速切换,我不知道你用什么输入法?
相似回答