习题 5.8 有15个数按由大到小的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。
代码:
#include <iostream>
#include<iomanip>
using namespace std;
int main()
{
int right, left, mid;
int i;
double arr[15],x;
cout << "请输入15个数:" << endl;
for(i = 0;i <15; ++i)
{
cin >> arr[i];
}
right = i - 1;
left = 0;
cout << "请输入要查找的数:" << endl;
cin >> x;
while(left <= right)
{
mid = (right + left)/2;
if(arr[mid] == x)
{
cout << "已找到:" << "是数组的第" << mid + 1 << "个元素" << endl;
return 0;
}
else if (x > arr[mid])
{
left = mid + 1;
}
else if (x < arr[mid])
{
right = mid - 1;
}
}
cout << "该数不在数组内" << endl;
return 0;
}