时间复杂性解释

时间:2013-02-11 23:50:08

标签: time binary complexity-theory

有人可以解释如何找到此算法的时间复杂度 我认为它的O(logN)是因为二进制分裂,但我不确定

    int findRotationCount(int a[], int sizeOfArray) //O(logN)
    {
        int start = 0;
        int endValue = sizeOfArray -1;

        while(start<endValue)
        {
            if(a[start] < a[endValue])
                return endValue+1;
            else
            {
                int mid = (start+endValue)/2;

                if(a[start]<=a[mid] && a[mid+1]<=a[endValue])
                    return mid+1;
                else if(a[start]<=a[mid])
                    start = mid+1;
                else
                    endValue = mid;
            }
        }
        return -1;
    }

谢谢!

1 个答案:

答案 0 :(得分:0)

你是对的,while的每个循环都会将范围start缩小到endValue到(大约)一半的大小,因此它是O(log n)。寻找例如分析二进制搜索,如果您需要更多详细信息,它具有类似的结构。