Java big data platform development study notes (15)-binary search

1. Linear table search:


1.1. Create a binary search method::

 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 method:

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);
}
    

Written by ChiKong_Tam on September 14, 2020

Guess you like

Origin blog.csdn.net/qq_42209354/article/details/108572040