求问一个C++问题 关于折半查找法

求问一个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;

}

首页