バイナリ検索とは:
生体認証検索もバイナリ検索であり、順序付けされたシーケンスで指定された要素を検索し、最小インデックス (低) を設定し、インデックスの最大値(height-1)と中間値mid((low height-1)/2)。今回の検索では、中間値が指定要素より小さい場合、low=mid 1とします。指定された要素より大きい場合は、height =mid-1;
コード実装: (無料のビデオ チュートリアルの共有: java ビデオ チュートリアル)
import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Scanner; public class Main2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int arr[] = { 2, 5, 6, 8, 9, 4, 7 }; Arrays.sort(arr); int deix(索引) = getxiabiao(arr, 7); } public static int getxiabiao(int[] arr, int key) { int heigh = arr.length-1; int low = 0; int mid = 0; while (low <= heigh) { mid = low + (heigh - low)/2; if (arr[mid] == key) { return mid; } else if (arr[mid] < key) { low = mid + 1; } else if (arr[mid] > key) { heigh = mid - 1; } } return -1; } }
中間値を設定します。
アルゴリズム 1: 中 = (低 高) / 2
アルゴリズム 2: 中 = 低 (高 - 低)/2
概要, アルゴリズム 1 は単純で、アルゴリズム 2 は抽出します。以降は、アルゴリズム 1 と違いはありません。しかし実際には、違いが存在します。
アルゴリズム 1 のアプローチでは、極端な場合、オーバーフロー (低高) のリスクがあり、間違った中間結果が得られ、プログラム エラーにつながりますが、アルゴリズム 2 では、計算された中間値が必ず次の値になるようにすることができます。 low より大きくても high より小さくても、オーバーフローの問題はありません。
おすすめの関連記事とチュートリアル: Java 入門チュートリアル
以上がJavaは二分探索を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。