見ている本にバイナリサーチが以下のように実装できると書いてあるのですが、return文のleft < right
の記述が必要な理由がわかりません。試しにreturn array[left] == value;
と記述して配列にある探している値がある場合とない場合をテストした所正しく動作しているので若干困惑してます。
C++
1bool bsearch(const int array[], int left, int right, int value) { 2 while (left + 1 < right) { 3 int med = (left+right) / 2; 4 if (array[med] > value) right = med; 5 else left = med; 6 } 7 8 return left < right && array[left] == value; 9}
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/12 22:23