ホームページ  >  記事  >  Java  >  Javaは二分探索を実装します

Javaは二分探索を実装します

王林
王林転載
2019-12-30 11:50:392303ブラウズ

Javaは二分探索を実装します

バイナリ検索とは:

生体認証検索もバイナリ検索であり、順序付けされたシーケンスで指定された要素を検索し、最小インデックス (低) を設定し、インデックスの最大値(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 サイトの他の関連記事を参照してください。

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