package rec;
import rec.Record2;
public class Rec23BinSearch
{ // 2分探索(binary search )
public static void main(String[] arg)
{
Record2[] a = rec.Rec23Data.getData();
Record2 key = new Record2("B02", 0);// 探したいデータ
int iFound = binSearch(a, key, 0, 8); //実際に存在するデータ範囲のを指定
if (iFound == -1){
System.out.println("見つかりません");
System.exit(0);//実行終了
}
a[iFound].display(iFound);
}
//バイナリーサーチ
public static int binSearch(Record2[] a, Record2 key, int iStart, int iEnd)
{
int iL = iStart; //現在の探索範囲で、先頭の添え字(左)
int iR = iEnd - 1; //現在の探索範囲で、末尾の添え字(右)
while (iL <= iR){
int iC = (iL + iR) / 2; //現在の探索範囲で、中央の添え字(中心)
Record2 rec = a[iC];
int val = rec.compareTo(key);//比較
if (val == 0){
return iC;//見つかった
} else if (val < 0) {//keyが大きい
iL = iC + 1;
} else {/* keyが小さい */
iR = iC - 1;
}
}
return -1; //見つからない
}
}