标签:
一、一般的二分查找
一般的二分查找即,输出要查找元素在数组中的位置,这里的位置没有特殊限定,没有要求是数字第一次出现的位置,也没有要求是最后一次出现的位置。
int getPos(vector<int> A, int n, int val) { if (A.size()==0) { return NULL; } int low=0; int high=n-1; while(low<=high) //注意这里是小于等于 { if (A[(low+high)/2]>val) { high=(low+high)/2-1; } else if (A[(low+high)/2]<val) { low=(low+high)/2+1; } else return (low+high)/2; } return -1; }
二、二分查找之返回数字第一次出现的位置
由于需要的是第一次的出现的位置,所以代码上要做一点小的改动,如果依然按照一种的代码执行那么结果如下:
下面我们将代码稍微修改为:
int getPos(vector<int> A, int n, int val) { if (A.size()==0) { return NULL; } int low=0; int high=n-1; while(low<=high) //注意这里是小于等于 { if (A[(low+high)/2]>val) { high=(low+high)/2-1; } else if (A[(low+high)/2]<val) { low=(low+high)/2; //只是改动了这里 } else return (low+high)/2; } return -1; }
标签:
原文地址:http://www.cnblogs.com/audi-car/p/4824367.html