Deo zbornika Učimo strukture podataka
Kvadratna matrica
Matrice s istim brojem redova i kolona nazivaju se kvadratne. Kvadratne matrice imaju glavnu i sporednu dijagonalu. Glavna dijagonala počinje od prvog elementa prvog reda i završava se na poslednjem elementu poslednjeg reda. Sporedna dijagonala seče glavnu dijagonalu tako da prave slovo X
.
Ispis glavne dijagonale
Na glavnoj dijagonali kvadratne matrice nalaze se elementi za koje vredi i == j
.
Naivna implementacija
Naivni algoritam za ispis glavne dijagonale, sa petljom unutar petlje, ima složenost O(n²)
:
const matrica = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
for (let i = 0; i < matrica.length; i++) {
for (let j = 0; j < matrica[i].length; j++) {
if (i == j) console.log(matrica[i][j])
}
}
Optimalna implementacija
Optimalan algoritam za ispis glavne dijagonale, sa samo jednim prolaskom, ima složenost O(n)
:
const matrica = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
for(let i = 0; i < matrica.length; i++)
console.log(matrica[i][i])
Ispis sporedne dijagonale
Na sporednoj dijagonali nalaze se elementi za koje vredi i + j == n - 1
(n je dužina matrice).
Naivna implementacija
Skup i naivan algoritam za ispis sporedne dijagonale, bi ovako izledao u Javascriptu:
const matrica = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
const n = matrica.length
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
if (i + j == n - 1) console.log(matrica[i][j])
}
}
Optimalna implementacija
Optimalan algoritam, sa samo jednim prolaskom, bio bi:
const matrica = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
const n = matrica.length
for(let i = 0; i < n; i++)
console.log(matrica[i][n - i - 1])