Java大数据平台开发 学习笔记(15)—— 二分查找

一、线性表查找:


1.1、创建 二分查找方法::

 public static ArrayList<Integer> binarySeach(int[] arr, int left, int right, int findVal){
    
    
     if(left > right){
    
    
         return new ArrayList<Integer>();
     }
     int mid = (left+right)/2;
     int minVal = arr[mid];
     if(findVal > minVal){
    
    
         return binarySeach(arr, mid+1, right, findVal);
     }else if(findVal < minVal){
    
    
         return binarySeach(arr, left, mid-1, findVal);
     }else{
    
    
         ArrayList<Integer> resIndexList = new ArrayList<Integer>();
         int temp = mid-1;
         while (true){
    
    
             if ((temp < 0) || (arr[temp] != findVal)){
    
    
                 break;
             }
             resIndexList.add(temp);
             temp -= 1;
         }
         resIndexList.add(mid);

         temp = mid + 1;
         while (true){
    
    
             if ((temp > arr.length-1) || (arr[temp] != findVal)){
    
    
                 break;
             }
             resIndexList.add(temp);
             temp += 1;
         }
         return resIndexList;
     }
 }
 

1.2、main 方法:

public static void main(String[] args) {
    
    

   int arr[] = {
    
    0, 1, 8, 10, 89, 100, 100, 100, 123};

   List<Integer> resIndexList = binarySeach(arr, 0, arr.length-1, 100);
   System.out.println("resIndexList: "+ resIndexList);
}
    

• 由 ChiKong_Tam 写于 2020 年 9 月 14 日

猜你喜欢

转载自blog.csdn.net/qq_42209354/article/details/108572040