著作権表示
- この記事の原作者:コロンビアバレーの弟
- 著者のブログアドレス: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;
}
}