ホームページ > Java > &#&チュートリアル > Java プログラミングでの二分探索

Java プログラミングでの二分探索

高洛峰
リリース: 2016-12-19 16:16:02
オリジナル
1009 人が閲覧しました

アルゴリズム: この方法はデータ量が多い場合に適しています。二分検索を使用する場合、データは順序どおりであり、繰り返されてはなりません。 基本的な考え方: データが昇順に並べ替えられていると仮定します。指定された値 x について、現在の位置の値が x より小さい場合、検索は成功します。現在の位置の値を調べ、シーケンスの前半で検索します。x が現在の位置の値より大きい場合は、見つかるまでシーケンスの後半で検索を続けます。

配列 { 12, 23, 34, 45, 56, 67, 77, 89, 90 } があるとします。ここで、バイナリ メソッドを使用して指定された値を検索し、配列のインデックスでそれを返す必要があります。見つからない場合は -1 を返します。コードは次のとおりです:

package cn.sunzn.dichotomy;

public class DichotomySearch {
   public static void main(String[] args) {
       int[] arr = new int[] { 12, 23, 34, 45, 56, 67, 77, 89, 90 };
       System.out.println(search(arr, 12));
       System.out.println(search(arr, 45));
       System.out.println(search(arr, 67));
       System.out.println(search(arr, 89));
       System.out.println(search(arr, 99));
   }

   public static int search(int[] arr, int key) {
       int start = 0;
       int end = arr.length - 1;
       while (start <= end) {
           int middle = (start + end) / 2;
           if (key < arr[middle]) {
               end = middle - 1;
           } else if (key > arr[middle]) {
               start = middle + 1;
           } else {
               return middle;
           }
       }
       return -1;
   }
}
ログイン後にコピー



Java プログラミングにおける二分探索に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート