这个算法的时间复杂度?

时间:2013-09-12 12:37:23

标签: search time binary big-o time-complexity

需要帮助使用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
}

2 个答案:

答案 0 :(得分:1)

如果你将数组中的元素数加倍,那么预期的步数就会增加1.因此,它是O(log(N)); log是base 2。

答案 1 :(得分:0)

如果找不到搜索内容,则每次搜索范围变小两倍。例如,64 - &gt; 32 - &gt;等等。也就是说,你需要最多迭代lb(n)。因此,运行时间为O(lb(n)),其中lb(n)是n的基数2的对数。