Time 时间复杂性解释

Time 时间复杂性解释,time,binary,complexity-theory,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] &l

有人能解释一下如何找到这个算法的时间复杂度吗 我认为它是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;
    }
int findRotationCount(int a[],int sizeOfArray)//O(logN)
{
int start=0;
int endValue=sizeOfArray-1;

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