写二分查找为什么容易犯错
二分查找,又名折半查找,思路和程序都很简单,在笔试或面试也经常被考到,让手写写二分查找,但很多人写出的程序有瑕疵,其实,面试官考你这个,是看你认不认真,你做事的态度。
下面附上正确的写法(PHP描述)
public function binarySearch(
arr,
key){
count=count(
arr);
low=0;
high=
count−1;while(
low<=high){mid=floor((
low+
high)/2);
if(
key<
arr[
mid])$high=$mid−1;elseif(
key>
arr[
mid]) {
low=
mid+1;
}else{
return $mid;
}
}
return false;
}
容易出错的地方:
1:while(
low<=
high) 这句,很多人写成
low<
high
2:if(
key<
arr[
mid])$high=$mid−1;//注意,是
mid-1;不是$mid