for (int i = 0; i < this.tiles.length * this.tiles.length; i++) { //O(n)
int row = i / this.tiles.length;
int col = i % this.tiles.length;
for (int j = i+1; j < this.tiles.length * this.tiles.length; j++) { //O(n^2) it's squared because there are two loops
int compareRow = j / this.tiles.length; //n +
int compareCol = j % this.tiles.length; //+ n
if(this.tiles[compareRow][compareCol] < this.tiles[row][col]) { //n
count++;
}
}
}
O (n ^ 2 + n) == O (n ^ 2)
Способ, которым меня учили, состоял в том, что для каждого l oop это O ( n) так, вложенный l oop будет, естественно, O (n ^ 2), а с каждым условием или операцией будет n + n ..nth
, где O (n ^ 2 + n) = O (n ^ 2)
Надеюсь, что это немного помогло.
Изучите ресурс ниже для более подробного объяснения.
Ресурсы: