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; //見つからない } }