📄 二分查找.txt
字号:
#include<iostream.h>
#include<time.h>
#include<stdlib.h>
#include<iomanip.h>
class Erfenchazhao
{
int i,j,n;
int a[50];
public:
Erfenchazhao();
void shunxu();
void paixu();
void display();
};
Erfenchazhao::Erfenchazhao()
{
n=50;
srand(int(time(0)));
for(i=0;i<n;i++)
a[i]=rand()%25;
}
void Erfenchazhao::paixu()
{
int i,j;
int flag=0;
for(i=1;i<n;i++)
{
int t;
for(j=1;j<n;j++)
if(a[j-1]>a[j])
{
t=a[j-1];
a[j-1]=a[j];
a[j]=t;
flag=1;
}
if(!flag)
break;
}
}
void Erfenchazhao::shunxu()
{
int low=0,high=n-1,mid;
int key,flag=0,i,j;
cout<<"请输入要查找的数字:";
cin>>key;
cout<<endl;
while(low<=high)
{
mid=(low+high)/2;
if(a[mid]==key)
{
flag=1;
i=mid;
j=mid;
cout<<"你所查找的数据位置为:"<<mid+1<<endl;
break;
}
else if(key>a[mid])
low=mid+1;
else
high=mid-1;
}
if(!flag)
cout<<"没有所要查找的数据!"<<endl;
else
{
while(i>=0)
{
if(a[--i]==key)
cout<<"你所查找的数据位置为:"<<i+1<<endl;
else
break;
}
while(j<=n)
{
if(a[++j]==key)
cout<<"你所查找的数据位置为:"<<j+1<<endl;
else
break;
}
}
}
void Erfenchazhao::display()
{
cout<<"原先数组为:"<<endl;
for(i=0;i<n;i++)
{
cout<<a[i]<<setw(5);
if((i+1)%5==0)
cout<<endl;
}
cout<<endl;
}
void main()
{
Erfenchazhao pl;
pl.paixu();
pl.display();
pl.shunxu();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -