打开第一个条件语句能够正确输出"target(-11) has been found, 关闭它之后再打开第二个条件语句却输出"no targer", 两个条件语句只是调换了判断条件, 为什么结果会不一样呢
#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
static int search(vector<int>& arr, int target) {
if (target<arr[0] || target>*(arr.end() - 1)) //如果目标在超出容器范围就不必寻找
return -1;
int left = 0; //头指针
int right = arr.size(); //尾指针
while (left < right) {
int middle = (left + right) >> 1; //中间值
#if 1 //第一个条件语句能够正确输出结果
if (arr[middle] < target)
left = middle + 1;
else
right = middle;
#endif
#if 0 //第二个条件语句不能输出正确结果
if (target < arr[middle])
right = middle;
else
left = middle + 1;
#endif
}
return (arr[left] == target ? left : -1);
}
};
int main() {
vector<int> arr = {-11,-1,2,4,5,7,9,11,34,55,67 };
int index = Solution::search(arr, -11);
if (index != -1)
cout << "target(" << arr[index] << ") has been found" << endl;
else
cout << "no target" << endl;
return 0;
}