探索のアルゴリズム:二分探索(バイナリサーチ)Advertisement二分探索(バイナリサーチ)
前提条件として、昇順または降順に整列されているデータに適用できる探索法。比較的高速で、データ量が多ければ多いほど、その効果は発揮される。
一回の比較ごとにデータ量を半分に絞り、探索を行う。 方法
実現
class Search{
/*
* 二分探索
* 引数1:数値配列 引数2:探索データ
* 戻り値:見つかった場合データの要素番号
* 見つからなかった場合 -1
*/
public static int binarySearch(int[] d, int x){
int lo = 0;
int hi = d.length - 1;
int mid = (lo + hi) / 2;
//探索
while(lo <= hi && d[mid] != x){
if(d[mid] > x){
hi = mid - 1;
}else{
lo = mid + 1;
}
mid = (lo + hi) / 2;
}
//結果返却
if(lo <= hi){
return mid;
}else{
return -1;
}
}
}
Advertisement |
ショートカット・634・634ブログ ・このカテゴリのトップページに戻る ・Incubator(Pukiwiki) ・634ラボ UIコレクションギャラリー ZO-3ジェネレーター サイト検索Y!ログール |