古典のJavaのバイナリサーチアルゴリズム(二分法)

二分法を使用する場合は、データが規則的で反復するべきではありません

そして、推測ゲームをプレイする子供は、あなたが数を推測するとき、彼は彼が望んでいたよりも、あなたの3つの選択肢を教えてくれます、あなたは彼が考えた1〜100の数を推測できるようになる、と同じです規模の大小、または推測、推測の最小数を使用するためには、あなたが少しを推測する場合は、あなたが51から100に推測を開始しなければならないので、次回の推測は75で、50件の推測から開始する必要があります2つの部分に(51〜100の半分)が、彼は、少し大きいと言う場合は1と49の間の数で、その次の時間25推測、の導入は時間を推測することとなる各可能な値

達成考えた:データは、シーケンスの最初の半分で検索され、xの値が現在の位置よりも小さい開始シーケンスを見つけるための中間位置から、所定の値xに、昇順であり、その後、データを2つに分割されていることを前提と

位置xが現在の値よりも大きい場合、配列の後半でルックアップが、そのデータは、二つに分割されています

現在位置の値がXに等しい場合、直接返す-1を返し、それが見つからない場合

実装コード:

パブリック クラスハーフ{ 
 
    公共 静的 ボイドメイン(文字列[]引数){
         INT [] ARR = 新しい INT [] {12、23、34、45、56、67、77、89、90}。// 長さ:9 
        のSystem.out.println(検索(ARR、34 ))。
 
    } 
 
    パブリック 静的 int型の検索(値int [] ARR、INT キー){
         int型 0 =起動しますint型エンド= arr.length - 1。// 8 
        ながら(<START = 端){
             int型中間=(スタート+エンド)/ 2。//中间值:4,1,2 
            場合(キー< ARR [中央]){  =中間- 1 
            } 他の 場合(>キー[中間] ARR){ 
                開始 =中央+ 1 
            } {
                 戻り中間。
            } 
        } 
        戻り -1 
    } 
} 

// 输出2

 

おすすめ

転載: www.cnblogs.com/zouwangblog/p/10984916.html