0

java で 1 つのパラメーターのみを使用して、int 配列に再帰的バイナリ検索を実装するにはどうすればよいですか? 試してみましたが、私のコードは機能しません。インスタンスが配列を持つオブジェクトであるクラスと、配列内の要素の数を検出するカウント変数を実装しました。1つのパラメーターのみを使用して再帰的バイナリ検索を実装するにはどうすればよいですか?

public class LinearSortedArray {
    int count;
    int[] a;

    public LinearSortedArray() {
        count = 0;
    }

    public LinearSortedArray(int size) {
        count = 0;
        a = new int[size];
    }

    public static int[] copyingMethod(int startPoint, int endPoint,
            LinearSortedArray arrayObj) {
        int[] copyingArray = new int[endPoint - startPoint];
        int j = startPoint;
        for (int i = 0; i < copyingArray.length; i++) {
            copyingArray[i] = arrayObj.a[j];
            j++;
        }
        return copyingArray;
    }

    public int binarySearchRec(int x) {
        if (count == 0) {
            return -1;
        }
        int pivot = count / 2;
        LinearSortedArray newArrayObj;
        if (x > a[pivot]) {
            newArrayObj = new LinearSortedArray(count - pivot);
            newArrayObj.count = newArrayObj.a.length;
            newArrayObj.a = copyingMethod(pivot, count, this);

            for (int i = 0; i < newArrayObj.a.length; i++) {
                System.out.print(newArrayObj.a[i]);
                System.out.print(" ");
            }
            System.out.println();
            return pivot + newArrayObj.binarySearchRec(x);
        } else if (x < a[pivot]) {
            newArrayObj = new LinearSortedArray(pivot);
            newArrayObj.count = newArrayObj.a.length;
            newArrayObj.a = copyingMethod(0, pivot, this);
            for (int i = 0; i < newArrayObj.a.length; i++) {
                System.out.print(newArrayObj.a[i]);
                System.out.print(" ");
            }
            System.out.println();
            return newArrayObj.binarySearchRec(x);
        } else {
            return pivot;
        }
    }
}

PS: 配列は既にソートされています

4

2 に答える 2