读书人

编程珠玑的题目,该怎么处理

发布时间: 2012-03-21 13:33:15 作者: rapoo

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

[解决办法]

C/C++ code
#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;} 

读书人网 >软件架构设计

热点推荐