读书人

编程珠玑的标题

发布时间: 2012-12-30 10:43:14 作者: rapoo

编程珠玑的题目
把t在数组x中第一次出现的位置返回给p,(如果存在多个t的话)。要求代码对数组元素进行对数次比较(该任务在log次比较之内完成)。求高手代码示之。(二分查找)
[解决办法]

#include <iostream>
using namespace std;


void FindPosition(int *array,int length,int value)
{
int start_index=0;
int end_index=length-1;
int temp_findIndex=-1;

int middle;
while (start_index<=end_index)
{
middle=(start_index+end_index)/2;
if (value==array[middle])
{
temp_findIndex=middle;
if (start_index==end_index)
{
break;
}
end_index--;
}
else if (value<array[middle])
{
end_index=middle-1;
}
else
{
start_index=middle+1;
}
}
if (temp_findIndex==-1)
{
cout<<"Can not find it!"<<endl;
}
else
{
cout<<"First index found is: "<<temp_findIndex<<endl;
}
}

int main()
{
int array[10]={1,2,2,2,3,3,4,4,5,5};
int value;
while (cin>>value)
{
FindPosition(array,10,value);
}

return 0;
}

读书人网 >软件架构设计

热点推荐