二分法查找java实现

JAVA二分查找实现

如何通过二分法快速查找一个在列表中的数
代码如下

import java.util.Arrays;
import java.util.Scanner;
public class BinarySearch
{   
    public static int rank(int key,int[] a)    
    {       
     int lo=0;        
     int hi=a.length-1;       
      while(lo<=hi)      
        {          
          int mid=lo+(hi-lo)/2;            
          if (key<a[mid])hi=mid-1;      //判断key所在区域,缩小范围      
          else if (key>a[mid])lo=mid+1;      
          else return mid;       
          }       
          return -1;   //key不存在数组中 
          }    
          public static void main(String[] args)   
           {              
             Scanner sc=new Scanner(System.in);       
              int[] whitelist={1,5,7,6,3};       
               System.out.println("input a number");         
               int key = sc.nextInt();      
                 Arrays.sort(whitelist);  //数组排序      
                 if (rank(key,whitelist)<0)            
                 System.out.println("no answer");       
                  else      
                     {           
                       System.out.println("exist number"+key);                          
                       }                            
               }
}

这就是简单的二分法查找的实现。

猜你喜欢

转载自blog.csdn.net/weixin_43935740/article/details/85001947