Binary Search bug list

来源:互联网 发布:布拉莫斯导弹 知乎 编辑:程序博客网 时间:2024/05/18 09:40

二分查找中的边界问题:

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 }

上面代码在查找大于右边界的数值时会出现问题,在中间小标的求取上。

0 0
原创粉丝点击