编写一个程序,实现二分查找
若以下回答无法解决问题,邀请你更新回答
1个回答
展开全部
import java.util.Scanner;
public class BinarySearch
{
public BinarySearch(){}
//算法实现
public int binarySearch(int[] a,int n,int index)
{
//int[] a是一个有序的数组(由小到大)
//n 要查找的数
//index n在数组中位置
int left=0;
int right=a.length-1;
while(left<=right)
{
int middle=(left+right)/2;
if(n==a[middle])
{
index=middle;
break;
}
if(n>a[middle])
{
left=middle+1;
}else
{
right=middle-1;
}
index=-1;
}
return index;
}
public static void main(String[] agrs)
{
Scanner s=null;
//int[] a=new int[]{1,2,3,4,5};
int[] a=new int[5];
//输入数组中的数
System.out.println("enter the numbers");
for(int i=0;i<5;i++)
{
s=new Scanner(System.in);
a[i]=s.nextInt();
}
//int n=3;
//输入要查找的数
System.out.println("enter your find numbers:");
int n=new Scanner(System.in).nextInt();
//索引位置
int index=0;
int f=new BinarySearch().binarySearch(a,n,index);
System.out.println("index is:\n"+f);
}
}
public class BinarySearch
{
public BinarySearch(){}
//算法实现
public int binarySearch(int[] a,int n,int index)
{
//int[] a是一个有序的数组(由小到大)
//n 要查找的数
//index n在数组中位置
int left=0;
int right=a.length-1;
while(left<=right)
{
int middle=(left+right)/2;
if(n==a[middle])
{
index=middle;
break;
}
if(n>a[middle])
{
left=middle+1;
}else
{
right=middle-1;
}
index=-1;
}
return index;
}
public static void main(String[] agrs)
{
Scanner s=null;
//int[] a=new int[]{1,2,3,4,5};
int[] a=new int[5];
//输入数组中的数
System.out.println("enter the numbers");
for(int i=0;i<5;i++)
{
s=new Scanner(System.in);
a[i]=s.nextInt();
}
//int n=3;
//输入要查找的数
System.out.println("enter your find numbers:");
int n=new Scanner(System.in).nextInt();
//索引位置
int index=0;
int f=new BinarySearch().binarySearch(a,n,index);
System.out.println("index is:\n"+f);
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询