Data structures 迭代程序时间复杂度分析需要说明

Data structures 迭代程序时间复杂度分析需要说明,data-structures,Data Structures,以下迭代程序的时间复杂度是多少 void function(int n) { int count = 0; for (int i=0; i<n; i++) for (int j=i; j< i*i; j++) if (j%i == 0) { for (int k=0; k<j; k++) printf("*");

以下迭代程序的时间复杂度是多少

void function(int n) {
    int count = 0; 
    for (int i=0; i<n; i++) 
        for (int j=i; j< i*i; j++) 
            if (j%i == 0) 
            { 
                for (int k=0; k<j; k++) 
                    printf("*"); 
            } 
}
void函数(int n){
整数计数=0;
对于(int i=0;i(n*n*n^2),使三个循环的复杂性为O(n^4)

当i=5时

这意味着总的复杂性

for (int j=5; j< 25; j++)  
     if (j%i == 0) // runs O(i) times
     {
      // runs j times when j = 5, 10, 15, 20
            for (int k=0; k<j; k++) {
                printf("*"); // runs j times when j =  5(1 + 2 + 3+ 4)
               // runs  j times which is i*i*(i*(i-1)/2) times
               // runs i^4 times
            }
     }
for(int j=5;j<25;j++)
如果(j%i==0)//运行O(i)次
{
//当j=5,10,15,20时运行j次

对于(int k=0;k)你能进一步解释一下吗?正如我在Geeksforgeks中看到的这个例子,上面程序的时间复杂度是O(n^5)。但我想知道解释。更多信息,请转到这个链接中的“问题7”:我想你只是在看一个例子。复杂度应该是O(n^5)正如秘书长所建议的那样OP@AndrewScott如果你从最里面的循环开始,一直到最外面的循环,你只会得到θ(i^3)的功。总共是O(N^4)。@AndrewScott我得到了解释,即外部(i)循环执行“N”次,内部(j)循环执行“N-1”次,而最里面(k)的循环执行“N*(N*(N-1)/2)次因此时间复杂度为n*(n-1)*n*(n*(n-1)/2,即O(n^5)