Time 时间复杂度检查
你认为这个函数的时间复杂度是多少? 我想是O(logN),但你能证实吗?如果没有,是否可以将其设置为LogN? 我试图计算旋转数组上的移位量Time 时间复杂度检查,time,complexity-theory,Time,Complexity Theory,你认为这个函数的时间复杂度是多少? 我想是O(logN),但你能证实吗?如果没有,是否可以将其设置为LogN? 我试图计算旋转数组上的移位量 int findRotationCount(int A[], int sizeOfArray) //O(logN) { int countOfShift = 0, i; for (i = 0; i < sizeOfArray; ++i) { ++countOfSh
int findRotationCount(int A[], int sizeOfArray) //O(logN)
{
int countOfShift = 0, i;
for (i = 0; i < sizeOfArray; ++i)
{
++countOfShift;
if (i+1 == sizeOfArray)
break;;
if (A[i] > A[i+1])
break;
}
}
int findRotationCount(int A[],int sizeOfArray)//O(logN)
{
int countOfShift=0,i;
对于(i=0;iA[i+1])
打破
}
}
谢谢 对我来说就像O(N)
,其中N
是你的sizeOfArray
值。我认为它是O(N)
,其中N=sizeOfArray
。这是证据:
如果至少满足以下条件之一,则循环可以结束:
i=n
=>存在n
迭代,因此,函数的复杂性是O(n)
A[i]>A[i+1]
=>数组中存在一个大于下一个的成员。在这里,您必须考虑函数的最坏情况。对于这一个,它是一个按递增顺序排序的数组。这意味着您将从第一个成员迭代到最后一个成员,并且永远不会发现第二个条件满足。因此,在最坏的情况下,复杂性是O(n)
(n)
,那么您可以说函数的复杂性也是O(n)
。
请注意,这是最坏的情况分析