public class searchinsertdeletesort {
static void search(int a[],int n,int e){
int beg=0,end=n-1;
int mid;
while(beg<=end)
{
mid=(end-beg)/2;
if(a[mid]==e)
{
System.out.println("Success");
return;
}
else if(e<a[mid])
{
end=mid-1;
}
else if(e>a[mid])
{
beg=mid+1;
}
}
System.out.println("Failes");
return;
}
public static void main(String arg[])
{
int a[]={1,2,3,4,5},i,e,in,j;
int n=a.length;
//search
System.out.println("Search:");
Scanner s=new Scanner(System.in);
e=s.nextInt();
search(a,n,e);
//insert
in=s.nextInt();
for(i=0;i<n;i++)
{
if(a[i]>in)
{
for(j=n;j>i;j--)
{
a[j]=a[j-1];
}
a[i]=in;
}
}
for(i=0;i<n;i++)
{
System.out.print(a[i]+" ");
}
}
}
当我运行并输入任何数字时,我的数组一直要求我输入数字。它没有显示任何其他内容。我只能输入数字 例如,它要求搜索: 我输入2 然后我可以再次输入idk为什么 然后我继续输入但没有任何反应
答案 0 :(得分:1)
问题在于服用mid
。应该是mid=(end+beg)/2;
,因为
(end-beg)/2
不会给出中间的确切索引。例如:如果beg=5
和end=9
,(end-beg)/2
将给出2
,这是不正确的,而(end+beg)/2
将给出7
。