ホームページ  >  記事  >  Java  >  Javaバイナリサーチ実装原理とコード実装

Javaバイナリサーチ実装原理とコード実装

王林
王林転載
2023-04-27 08:52:061082ブラウズ

1. 二分探索手順の説明

(1) まず、探索区間全体の中央位置を決定します Mid = (左 右)/2

( 2) 使用方法 検索対象のキーワード値と中央のキーワード値を比較し、

等しければ検索成功です

大きければ半分の検索を継続します。最後(右)の半分のエリア

未満の場合は、前(左)の半分のエリアで半分の検索を続行します

(3) 決定された縮小された値について、もう一度半分の式を押しますエリアに移動し、上記の手順を繰り返します。

最後に、検索が成功したか失敗したかの結果が得られます。二分探索の記憶構造は 1 次元配列に格納されます。ハーフサーチアルゴリズムの例

Javaバイナリサーチ実装原理とコード実装2. 要件

(1) シーケンシャルストレージ構造を使用する必要があります。

(2) キーワードのサイズ順に並べる必要があります。

3.例

public class Demo {
 
    public static void main(String[] args) {
        int[] arr={-1,0,3,5,9,12};//查找的数组
        int searchNum=13;//查找的目标数
        Arrays.sort(arr);
 
        int resultOne=binarySearchOne(arr,searchNum,0,arr.length-1);
        System.out.println(resultOne);
 
        int resultTwo=binarySearchTwo(arr,searchNum);
        System.out.println(resultTwo);
    }
 
    /**
     * 递归实现
     * @param arr
     * @param searchNum
     * @param start
     * @param end
     * @return
     */
    public static int binarySearchOne(int[] arr,int searchNum,int start,int end){
        if(start>end)
            return -1;
        int middle=(start+end)/2;
        if(searchNum<arr>arr[middle])
            return binarySearchOne(arr,searchNum,middle+1,end);
        else
            return middle;
    }
 
    /**
     * 非递归实现
     * @param arr
     * @param searchNum
     * @return
     */
    private static int binarySearchTwo(int[] arr, int searchNum) {
        int start=0;
        int end=arr.length-1;
        while(startarr[middle])
                start=middle+1;
            else
                return middle;
        }
        return -1;
    }
}</arr>

以上がJavaバイナリサーチ実装原理とコード実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。