求问一个C++问题 关于折半查找法
代码本身没什么问题,主要是你排版缩进没弄好,所以少了一个括号也没发现。
建议你每次编程时,调整好缩进,方便你查看程序
#include<iostream>
usingnamespacestd;
constintn=15;
intmain()
{
intarray[n];
inti;
intscr;
voidRenew(inta[]);
voidzhe_ban(inta[],int);
cout<<"Pleaseenterdata:"<<endl;
for(i=0;i<15;i++)//输入数据
{
cin>>scr;
array[i]=scr;
}
Renew(array);//调用排序
cout<<"newarrayis:"<<endl;
for(i=0;i<n;i++)//输出排序结果
cout<<array[i]<<"\t";
cout<<endl;
intx;//调用折半法查找
cout<<"Pleaseenterthenumberyouwanttofind:"<<endl;
cin>>x;
zhe_ban(array,x);
system("pause");
return0;
}
voidRenew(inta[])
{inti,j,temp;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]<a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}//少}
voidzhe_ban(inta[],intx)
{
intleft=0,right=n-1;
while(left!=right)
{
if(a[(right+left)/2]>x)
right=(right+left)/2;
elseif(a[(right+left)/2]<x)
left=(right+left)/2;
else{
cout<<"该数是数组中的第"<<(right+left)/2+1<<"个元素的值"<<endl;
return;
}
}
cout<<"没有你查找的数"<<endl;
}