Search code examples
performancealgorithmruntimefrequency-analysis

how to count frequency count in triple nested loop


I am trying to determine the frequency count of a triple nested loop.

for i = 1 to n do
    for j = 1 to i do
        for k = i to j do
            x =  x + 1

I know that the statement x = x + 1 will not get executed until i attains the value of n

Any tips/suggestions on how to get started?


Solution

  • Let's take 4 and 5 as examples. When i = 4,

    ...
        for j = 1 to 4 do
            for k = 4 to j do
                x =  x + 1
    
    ...j = 1
       for k = 4 to 1 do  // 4 times
           x =  x + 1
    ...j = 2
       for k = 4 to 2 do  // 3 times
           x =  x + 1
    ...j = 3
       for k = 4 to 3 do   // twice
           x =  x + 1
    ...j = 4
       for k = 4 to 4 do   // once
           x =  x + 1
    

    When i = 5,

    ...
        for j = 1 to 5 do
            for k = 5 to j do
                x =  x + 1
    
    ...j = 1
       for k = 5 to 1 do  // 5 times
           x =  x + 1
    ...j = 2
       for k = 5 to 2 do  // 4 times
           x =  x + 1
    ...j = 3
       for k = 5 to 3 do   // 3 times
           x =  x + 1
    ...j = 4
       for k = 5 to 4 do   // twice
           x =  x + 1
    ...j = 5
       for k = 5 to 5 do   // once
           x =  x + 1
    

    pattern?