Binary Search bug list

二分查找中的邊界問題:

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 }

上面代碼在查找大於右邊界的數值時會出現問題,在中間小標的求取上。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章