-3

Big-O 表記法を使用して、このアルゴリズムの時間の複雑さを理解するのに助けが必要です。乾杯。

int binarySearch(int[] array, int key) {
    int lo = 0, mid, hi = array.length-1;
    while (lo <= hi) {
        mid = (lo + hi)/2;
        if (key < array[mid])
            hi = mid - 1;
        else if (array[mid] < key)
            lo = mid + 1;
        else return mid; // success
    }
    return -1; // failure
}
4

2 に答える 2

1

配列の要素数を 2 倍にすると、予想されるステップ数は 1 増加します。したがって、O(log(N)); です。ここで、log は底 2 です。

于 2013-09-12T12:42:15.690 に答える
-1

検索したものが見つからない場合は、検索するたびに、検索する範囲が 2 分の 1 になります。たとえば、64 -> 32 -> 16 などです。つまり、多くても lb(n) を反復する必要があります。したがって、実行時間は O(lb(n)) です。ここで、lb(n) は n の 2 を底とする対数です。

于 2013-09-12T12:42:25.247 に答える