我应该怎么做排序数组搜索?

时间:2018-03-12 15:57:21

标签: java

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为什么 然后我继续输入但没有任何反应

1 个答案:

答案 0 :(得分:1)

问题在于服用mid。应该是mid=(end+beg)/2;,因为 (end-beg)/2不会给出中间的确切索引。例如:如果beg=5end=9(end-beg)/2将给出2,这是不正确的,而(end+beg)/2将给出7