Javaデータ構造とアルゴリズム分析-バイナリ検索


著作権表示

  • この記事の原作者:コロンビアバレーの弟
  • 著者のブログアドレス:http://blog.csdn.net/lfdfhl

原理分析

順序付けられた配列{2、5、8、12、16、23、38、56、72、91}があります。二分法を使用して、要素23に対応するインデックスを見つけてください。

前提条件

バイナリ検索の前提は、配列内の要素が順序付けられていることです。そうでない場合、検索できません。

検索原理

最初の一歩:

配列全体の最大、最小、および中間の添え字を決定します

2番目のステップ:

目標値を、最大添え字に対応する値、最小添え字に対応する値、および中間添え字に対応する値と比較します。

3番目のステップ:

最大添え字、最小添え字、中間添え字を調整する

プロセスを見つける

ここに写真の説明を挿入

コード

バイナリ検索のコード実装は次のとおりです。

package com.algorithm;

/**
 * 本文作者:谷哥的小弟 
 * 博客地址:http://blog.csdn.net/lfdfhl
 *
 */
public class BinarySearch {
    
    
	public static void main(String[] args) {
    
    
		int[] intArray = {
    
     2, 5, 8, 12, 16, 23, 38, 56, 72, 91 };
		int index = binarySearch(intArray, 23);
		System.out.println(index);
	}

	public static int binarySearch(int[] intArray, int value) {
    
    
		int max = intArray.length - 1;
		int min = 0;
		int mid = (max + min) / 2;
		while (intArray[mid] != value) {
    
    
			if (min <= max) {
    
    
				if (intArray[mid] > value) {
    
    
					max = mid - 1;
				} else if (intArray[mid] < value) {
    
    
					min = mid + 1;
				}
				mid = (max + min) / 2;
			} else {
    
    
				System.out.println("未查询到相应数据");
				mid = -1;
				break;
			}
		}
		return mid;
	}

}

運用結果

ここに写真の説明を挿入

おすすめ

転載: blog.csdn.net/lfdfhl/article/details/109322224