2016-07-20 2 views
-2

Код ниже не может получить правильный ответ, но я не знаю, какая часть является неправильной. Его логика выглядит правильно, он не может запустить правильный ответОшибка двоичного кода поиска не найден

/*binary search*/ 
    int binary_search(const vector<int> &a,int x) { 
    long left = 0; 
    int mid; 
    long right=a.size()-1; 
//write your code here 
    while (a[left]<a[right]){ 
     mid=a[left+(right-left)/2]; 
     if (a[mid]==x){ 
      return mid; 
     } 
     else if (a[mid]>x){ 
      right=mid-1; 
     } 
     else{ 
      left=mid+1; 
     } 
    } 
    return -1; 
} 

ответ

0

Ваш цикл должен обуславливаться left <= right. Также mid должно быть mid = (left + right)/2;

+0

Большое вам спасибо. Я застрял в этом коде часами. Каждый раз, когда я проверял код, я предполагал, что это то, что я думал. Огромное спасибо!!! – Tina

+0

Не забудьте отметить ответ, если он был полезен. Пожалуйста! –

Смежные вопросы