//2d3 二分搜索技术
#include <iostream>
#include<stdio.h>
using namespace std;
template<class Type>
int BinarySearch(Type a[],const Type& x,int n)
{
int left = 0;///最左边,也就是最开始的时候
int right = n-1;///最右边的界限
while(left<=right)///当还没找到时,继续找
{
int mid = (left + right)/2;///二分法(因为保证是有序的)
if(x == a[mid])///当找到的时候
{
return mid;///则返回该数
}
if(x>a[mid])///当大于时,说明在该数的右边,则最小+1
{
left = mid + 1;
}
else///当小于时,说明在该数的左边,则最大-1
{
right = mid - 1;
}
}
return -1;
}
int main()
{
int x ,a[100],n;
cout<<"请输入个数n:";
scanf("%d",&n);
cout<<endl<<"请输入需要查找的数:";
scanf("%d",&x);
cout<<endl<<endl;
cout<<"请输入"<<n<<"个数组";
for(int i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
cout<<BinarySearch(a,x,n)<<endl;
return 0;
}
利用二分收索查找该数在该数组所在的位置,前提是要保证改数组是有序的
最新推荐文章于 2018-12-16 21:18:40 发布