二分查找中的边界问题:
411 int binarySearch(int *a, int length, int key)
412 {
413 int start, end, mid;
414 start = 0; end = length-1;
415 if(a[0] > key || a[length-1]<key){
416 // return ERROR;
417 }
418 while(start<end){
419 mid = (start+end)/2;
420 if(a[mid]==key){
421 break;
422 }
423 else if(a[mid] < key){
424 start = mid;
425 }
426 else if(a[mid] > key){
427 end = mid;
428 }
429 }
430 if(start == end && a[start] != key){
431 return ERROR;
432 }
433
434 return OK;
435 }
上面代码在查找大于右边界的数值时会出现问题,在中间小标的求取上。