Algorithm 算法的平均复杂度
我的老师给了我以下代码来找出他的平均复杂度:Algorithm 算法的平均复杂度,algorithm,loops,time-complexity,Algorithm,Loops,Time Complexity,我的老师给了我以下代码来找出他的平均复杂度: int function(int a[], int n) { int k=0; for(i=0;i<n;i++) for(j=i+1;j<n;j++) k=k+((a[i]*a[i]+a[j]*a[j])%5==0) return k; } void main() { int vector={0,1,2,3,4,5,6,7,8,9} int a=functi
int function(int a[], int n)
{
int k=0;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
k=k+((a[i]*a[i]+a[j]*a[j])%5==0)
return k;
}
void main()
{
int vector={0,1,2,3,4,5,6,7,8,9}
int a=function(vector, 10);
printf( "%d\n", a);
}
int函数(inta[],intn)
{
int k=0;
对于(i=0;i在平均案例分析中,我们获取所有可能的输入,并计算所有输入的计算时间。将所有计算值相加,然后除以输入总数
您的算法中只有一种可能性。对于所有输入,您的算法在O(n*(n+1)/2)时间内运行
平均时间复杂度为O(n*(n+1)/2)=O(n^2)。在计算复杂度理论中,算法的平均案例复杂度是算法使用的一些计算资源(通常是时间)的量,在所有可能的输入上平均
在您的例子中,您已经计算出您的程序将执行n*(n+1)/2(对于给定的n)次。然后您可以思考:如果n=1,2,3,…?您只需要使用公式将所有这些值相加并取平均值。很容易得到O(n^2)解决方案。此代码总是做相同的工作量,因此平均情况、最佳情况和最坏情况应该是相同的。@templatetypedef这也是我的猜测。但对于我的老师,我需要一个更高的答案。我不确定我是否理解你所说的“更高”是什么意思但是仅仅说运行时只取决于长度,其他什么都不能满足。