二分法查找的前提条件
(1) 数列必须是有序的;
(2) 必须是连续的。
上图为二分法查找的导图:即,
1.0 用array[mid] 与需要查找的值比较,根据结果更新right或者left;
2.0 注意arr[mid]处已经比较,right或者left = mid +1 或者减1;
3.0 注意,这里使用的都是int, 你输入77.7,Fnumber 会被转化为77,继而输出“找到了77”.
int arr[7] = { 1,6,9,77,88,601,800 };
int left = 0;
int right = 6;
int mid = 0;
cout << "Input number you found: " << endl;
int Fnumber = 0;
cin >> Fnumber;
cout << "Fnumber = " << Fnumber << endl;
while (left<=right) // 就是寻找的最后一个元素;
{
mid = (left + right) / 2;
if (Fnumber < arr[mid])
right = mid - 1;
else if (Fnumber > arr[mid])
left = mid + 1;
else
{
cout << "找到了:" << mid;
return 0;
}
}
cout << "没有找到" << endl;
return 0;