编程珠玑的题目
把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;}