二分法查找,基於java基礎

public class Haofang {
    public static void main(String[] args) {
//        要查找的數
        int i=11;
        //準備好的有序數組
        int [] arr={1,1,2,2,3,3,4,4,5,6,7,8,9};
        
        int b=serach(arr, i);
        System.out.println( "下標是:"+b);
    }
/**
 * 自定義的二分法查找數組
 * @param arr
 * @param i
 * @return
 */
    private static int serach(int[] arr, int i) {
//        數組起始值
        int begin=0;
//        數組的結束值
        int end=arr.length-1;
//        二分法的中間值
        int middle=(begin+end)/2;
//        使用while循環,條件是角標
        while(begin<=end){
//            若是是數值大於中間值,讓起始角標改值
            if(i>arr[middle]){
                begin=middle+1;
            }
            if(i==arr[middle]){
                return middle;
            }
//            若是是數值小於中間值,讓結束角標改值
            if(i<arr[middle]){
                end=middle-1;
            }
//            給中間值賦值
            middle=(begin+end)/2;
        }
//        說明數組中沒有此值
        return -1;
    }數組

}
 .net

相關文章
相關標籤/搜索