JavaでのArrays.binarySearch()メソッドの詳細
2430 ワード
1.作用
指定した要素を二分法で並べ替えた配列で検索し、その要素の下付き文字を返します.
2.操作インタフェース
メソッドのプロトタイプは、配列名と検索する必要がある要素の2つのパラメータを受信する
3.戻り値
メソッドの戻り値のタイプは整数で、具体的な戻り値は次の2つに分けられます.配列に要素が存在する場合、その要素の配列内の下付き文字が返されます. 例えば
配列に要素が存在しない場合は、-(挿入点+1)が返されます. ここでの挿入点とは、具体的には、配列にその要素が存在する場合、その要素は配列の下付き を指す.例えば
4.具体的な実現原理
指定した要素を二分法で並べ替えた配列で検索し、その要素の下付き文字を返します.
2.操作インタフェース
メソッドのプロトタイプは、配列名と検索する必要がある要素の2つのパラメータを受信する
public static int binarySearch(Object[] a, Object key)
です.3.戻り値
メソッドの戻り値のタイプは整数で、具体的な戻り値は次の2つに分けられます.
import java.util.Arrays;
public class binarySearch {
public static void main(String[] args) {
int[] scores = {1, 20, 30, 40, 50};
// scores 20
int res = Arrays.binarySearch(scores, 20);
//
System.out.println("res = " + res);
}
}
実行結果:res=2import java.util.Arrays;
public class binarySearch {
public static void main(String[] args) {
int[] scores = {1, 20, 30, 40, 50};
//1. scores 25
// 25 20 30 ,
// 20 1, 25 2,
// :-(2 + 1) = -3
int res1 = Arrays.binarySearch(scores, 25);
//2. -2
// -2
// , -2 0
// :-(0 + 1) = -1
int res2 = Arrays.binarySearch(scores, -2);
//3. 55
// 55
// , 5
// :-(5 + 1) = -6
int res3 = Arrays.binarySearch(scores, 55);
//
System.out.println("res1 = " + res1);
System.out.println("res1 = " + res2);
System.out.println("res1 = " + res3);
}
}
実行結果:res 1=-3 res 1=-1 res 1=-6import java.util.Arrays;
public class binarySearch {
public static void main(String[] args) {
int[] scores = {1, 20, 30, 40, 50};
// java binarySearch
int a = Arrays.binarySearch(scores, 30);
// binarySearch
int b = myBinarySearch(scores, 30);
System.out.println("a = " + a);
System.out.println("b = " + b);
}
//
public static int myBinarySearch(int [] array, int key) {
int low = 0;
int high = array.length - 1;
int mid = (low + high) / 2;
while(low <= high) {
if(key < array[mid])
high = mid - 1;
else if(key > array[mid])
low = mid + 1;
else
return mid;
}
return -(1 + low);
}
}
実行結果:a=2 b=2