0

http://en.wikipedia.org/wiki/Binary_search_algorithm#Average_performance

BinarySearch(int A[], int value, int low, int high)
{
    int mid;
    if (high < low)
        return -1;
    mid = (low + high) / 2;
    if (A[mid] > value)
        return BinarySearch(A, value, low, mid-1);
    else if (A[mid] < value)
        return BinarySearch(A, value, mid+1, high);
    else
        return mid;
}

検索しようとしている整数が常に配列内にある場合、バイナリ検索アルゴリズムの平均パフォーマンスを計算できるプログラムを作成するのを手伝ってくれる人はいますか?

編集:実際にプログラムを実行して呼び出し回数を数えることでこれを実行できることはわかっていますが、ここでやろうとしていることは、関数を呼び出さずに実行することです。

edit2: KennyTM: それは時間の複雑さです。呼び出しの平均数を計算しようとしています。たとえば、A[2] で整数を検索する平均呼び出し回数は、1.67 (5/3) になります。

4

1 に答える 1

0

「プログラム」は必要ありません。BinarySearchメソッドの呼び出し回数をカウントするだけです。

別のパラメーターを (ポインターで) 渡すか、グローバル変数を使用することで、これを簡単に行うことができます。この場合、それはおもちゃなので、おそらくグローバルで手早く汚れを落とします。

于 2010-04-25T16:58:16.537 に答える