配列内の指定された要素の検索(バイナリ検索)
配列内の指定された要素を検索するには、順序付けられた配列に対してより効率的なバイナリ検索を使用できます。
昇順の配列を例として取り上げます。バイナリ検索では、最初に中央の位置にある要素を取得し、検出する値が中央の要素よりも大きいか小さいかを確認します。小さい場合は、左に移動して検索します。それ以外の場合は、検索します。右に移動して検索します。
コード:
public static void main(String[] args) {
int[] arr = {
12, 22, 32, 42, 52, 62};
System.out.println(binarySearch(arr, 32));
}
public static int binarySearch(int[] arr, int toFind) {
int left = 0;
int right = arr.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (toFind < arr[mid]) {
// 去左侧区间找
right = mid - 1;
} else if (toFind > arr[mid]) {
// 去右侧区间找
left = mid + 1;
} else {
// 相等, 说明找到了
return mid;
}
}// 循环结束, 说明没找到
return -1;
}
結果: