说明及代码如下:
/***
本例用来实现对分查找:
对分查找:给定一个整数X和一列已经排好序的整数,查找X是否在这列整数中,若在,则返回整数
在这列整数中的位置;若不在,则返回-1
***/
#include <iostream>
using namespace std;
int BinarySearch(int a[], int n, int X);
int main()
{
int N; // 整数的个数
int num; //存放我们输入的用来寻找的数字
cout << "Enter the number of integers: ";
cin >> N;
int a[N]; //定义一个数组来存放这些整数
for(int i=0; i<N; i++)
cin >> a[i]; //输入一列排好序的整数,这里假定我们输入的是从小到大的整数
cout << "Enter the integer you want to search: ";
cin >> num;
int result = BinarySearch(a, N, num);
cout << "The return value is " << result<< endl;
return 0;
}
int BinarySearch(int a[], int n, int X) //参数为一个有n个元素的数组,在其中查找是否含有X
{
int low = 0, middle, high = n - 1;
while(low <= high)
{
middle = (low + high) / 2;
if(X > a[middle])
low = middle + 1;
else if(X < a[middle])
high = middle - 1;
else
return middle + 1;
}
return -1;
}
运行结果: