java实现二分法的完整代码

时间:2018-11-16
这篇文章主要为大家详细介绍了java实现二分法的完整代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

二分法查找比较局限性的就是只能操作一个已经排序了的数组。

下面为一个二分法实现的完整代码

package dichotomy;
import java.util.Arrays;
import java.util.Scanner;
import static java.lang.System.out;
public class Erchange {
 
  private static Scanner in;
  public int find(int a[],int b) //a为所要查找的数
  {
  int mid,low=0,high;
  high=a.length-1;
  while(low<=high)
  {
   mid=low+(high-low)/2;
   if(b<a[mid])
   {
    high=mid-1;
   }
   else if(b>a[mid])
   {
    low=mid+1;
   }
   else
  {
    return mid+1;
   } 
  }
 return 0;
 }
 public static void main(String[] args) {
   int a[];
   int t;
   int sum=0;
   Erchange p=new Erchange();
   int q2 = 0;
   in = new Scanner(System.in);
   out.println("请输入数组长度");
  q2= in.nextInt();
   a=new int [q2];
   out.println("请输入数组元素");
   for(int i=0;i<a.length;i++)
   {
   a[i]=in.nextInt();
   }
   out.println("排序后数组为");
   Arrays.sort(a);
   for (int i = 0; i < a.length; i++) {
   out.print(a[i]+" ");
   }
   out.println();
   out.println("请输入所要查找的数若未查找到该数则输出-1");
   q2=in.nextInt();
   for(int i=0;i<a.length;i++)
   {
    if(q2==a[i])
    {
      t=1;
    }
    else
    {
      t=0;
    }
    sum=sum+t;
  }
  if(sum==0)
  {
    out.println("-1");
  }
  else
  {
  out.println("所输入的数在第"+p.find(a,q2)+"位");
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。