[关闭]
@xixibufu 2018-03-07T11:53:50.000000Z 字数 368 阅读 1026

我的编程珠玑

未分类


关于二分查找的返回下标 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 开始计数

  1. int binary_search(int* a, int begin, int end, int val) {
  2. int i, j, mid;
  3. i = begin;
  4. j = end;
  5. while (i <= j) {
  6. mid = i + (j - i) / 2;
  7. if (val == a[mid]) {
  8. return mid;
  9. } else if (val < a[mid]) {
  10. j = mid - 1;
  11. } else {
  12. i = mid + 1;
  13. }
  14. }
  15. return i;
  16. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注