#include "stdio.h"
int bin_search(int array[], int key, int length, int loc_flag) {
int low = 0, high = length -1;
int mid = 0;
int last = -1; /*用last记录最终的位置loc_a或loc_b*/
while (low<=high) {
mid = (low+high)/2;
if (array[mid]<key) {
low = mid+1;
} else if (array[mid]>key) {
high = mid-1;
} else { /*找到了key*/
last = mid; /*记录下当前key的位置*/
if (loc_flag == 0) {
high = mid - 1; /*查找loc_a,调整high值继续在左边查找*/
} else {
low = mid + 1; /*查找loc_b,调整low值继续在右边查找*/
}
}
}
return last; /*返回last,它是最终的位置l