@xixibufu
2018-03-07T11:53:50.000000Z
字数 368
阅读 1169
未分类
关于二分查找的返回下标 i,可以理解为被查找元素 val 需要插入(有序数组)的位置。
若干样例:
+ a = [1, 2, 3, 4, 5]; val = 2; return i = 1;
+ a = [1, 3, 4, 5, 6]; val = 2; return i = 1;
+ a = [1, 2, 3, 4, 5]; val = 0; return i = 0;
+ a = [1, 2, 3, 4, 5]; val = 6; return i = 5;
所有的下标均是从 0 开始计数
int binary_search(int* a, int begin, int end, int val) {int i, j, mid;i = begin;j = end;while (i <= j) {mid = i + (j - i) / 2;if (val == a[mid]) {return mid;} else if (val < a[mid]) {j = mid - 1;} else {i = mid + 1;}}return i;}