Calcolo della complessità

Di un'algoritmo si possono trovare le complessità e , ma quella di interesse è .

Tra i costrutti, le complessità sono di:

  • Sequenza:

    Block1  // O(f(n))
    Block2  // O(g(n))
    

  • If else:

    if Cond then  // O(f(n))
      Block1      // O(g(n))
    else
      Block2      // O(h(n))
    

  • Cicli for:

    for i = 1 to k
      for j = 1 to m
        Block  // O(f(n))
    

  • Ciclo while:

    while Cond do  // O(f(n))
      Block        // O(g(n))
    

    dove è il massimo numero di iterazioni per una certa .

Per esempio, l'algoritmo

MyAlgorithm(int n) -> int
  int a, i, j
  if n > 1 then                 // 1
    a = 0                       // 1
    for i = 1 to n              // n
      for j = 1 to n            // n
        a = (a + i) * j + a/2   // 1
    for i = 1 to 16             // 16
      a = a + MyAlgorithm(n/4)  // T(n/4)
    return a                    // 1
  else
    return 0                    // 1

avrà una complessità .