输入一组以排列好的数据和被查数,用数组查找该数,输出这个数所在的位置
输入要求:输入一组数据,最后一个为被查数(即要在数组中查到的数)
输出:该数在前面数据所在的位置
折半查找:和二分法类似,选取中心值看是否相同,不同再进行判断被查数在中值前还是在中值后,从而缩小搜查间距,此操作在成员数较多的时候可节省判断步数。
#include <stdio.h>
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int a[10];
int i = 1, j = 10, n, mid = 0, sign;
for (int x = 0;x < 10;x++)
{
cin >> a[x];
}
cin >> n;
while (i <= j)
{
mid = (i + j) / 2;
if (n == a[mid - 1])
{
cout << mid;
sign = 1;
break;
}
else if (a[mid - 1] < n)
i = mid + 1;
else
j = mid - 1;
}
if (sign != 1)
printf("无此数!");
return 0;
}