64,646
社区成员
发帖
与我相关
我的任务
分享
#include<iostream.h>//C++二分法查找;C++折半查找;C++查找数组源程序[可直接运行,网址:www.ok2002.com]
#define size 5
main()
{
//声明变量
int i,j;
float t,a[size];
//从键盘上为数组赋值
for (i=0;i<size;i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
}
//使用冒泡排序法对数组按从小到大顺序排序
for (i=0;i<size-1;i++)
for (j=i+1;j<size;j++)
if (a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
//显示排序结果
for (i=0;i<size;i++)
cout<<a[i]<<" ";
cout<<endl;
//输入要查找的数据
int value;
int found; //找到为1,否则为0
int low,high,mid;
for (i=1;i<=3;i++) {
cout<<"value=";
cin>>value;
//二分法(又叫折半查找法)查找数组a
found=0;
low=0;
high=size-1;
while(low<=high)
{
mid=(high+low)/2;
if (a[mid]==value)
{
found=1;
break;
}
if (a[mid]<value)
low=mid+1;//mid往右移动
else
high=mid-1;//mid往左移动右逢源
}
if (found)//fond的初始值为0,一旦找到,found变量被置1,引发此条件语句,从而输出找到的结果,否则告知用户找不到。
cout<<"The valu found at:a["<<mid<<"]="<<a[mid]<<endl;
else
cout<<"The "<<value<<" is not found!"<<endl;
}
}