package org.structure.search;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* 二分查找
* @author cjj_1
* @date 2020-08-18 10:35
*/
public class BinarySearch {
public static void main(String[] args) {
int[] arr ={1,1,100,100,100,100};
List list = binarySearch(arr,0,arr.length-1,100,new ArrayList());
System.out.println(Arrays.toString(list.toArray()) +":是下标!");
}
/**
* 数组中查找一个对应的值
* @param arr
* @param left
* @param right
* @param findVal
* @return
*/
public static int binarySearch(int[] arr,int left,int right,int findVal){
if(left>right)
return -1;
int mid = (left+right)/2;
int val = arr [mid];
if(findVal<val){
return binarySearch(arr,left,mid-1,findVal);
}else if(findVal>val){
return binarySearch(arr,mid+1,right,findVal);
}else {
return mid;
}
}
/**
* 数组上查找多个要找的值
* @param arr
* @param left
* @param right
* @param findVal
* @param list
* @return
*/
public static List binarySearch(int[] arr, int left, int right, int findVal, ArrayList list){
if(left>right)
return list;
int mid = (left+right)/2;
int val = arr [mid];
if(findVal<val){
binarySearch(arr,left,mid-1,findVal,list);
}else if(findVal>val){
binarySearch(arr,mid+1,right,findVal,list);
}else {
list.add(mid);
binarySearch(arr,left,mid-1,findVal,list);
binarySearch(arr,mid+1,right,findVal,list);
}
return list;
}
}
二分查找
最新推荐文章于 2023-05-28 13:59:52 发布