Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Metóda 1:Vnorené slučky
Toto je najpriamejší prístup. Najprv iterujeme cez stĺpce a potom riadky v každom stĺpci.
`` `Java
public class columnMAJortraVersal {
public statické neplatné traversecolumnmaJor (int [] [] matrix) {
int rows =matrix.Length;
int cols =matica [0] .Length; // Predpokladá obdĺžnikovú maticu
pre (int j =0; j
}
System.out.println (); // Nováline po každom stĺpci
}
}
public static void main (String [] args) {
int [] [] matrix ={
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
System.out.println ("Traveršovanie stĺpcov-Major:");
TraversecolumnMAJOR (Matrix);
}
}
`` `
Toto bude výstup:
`` `
Prechodovanie stĺpcových majstrov:
1 4 7
2 5 8
3 6 9
`` `
Metóda 2:Jedna slučka s výpočtom (efektívnejšia pre veľké matice)
Táto metóda sa vyhýba vnoreným slučkám a potenciálne ponúka lepší výkon pre veľmi veľké matice znížením režijných nákladov slučky. Vypočíta priamo index.
`` `Java
public class columnMAJortraVersalefficient {
public statické neplatné traverseColumnMAJOREFFICTY (int [] [] matrix) {
int rows =matrix.Length;
int cols =matica [0] .Length;
pre (int k =0; k
int j =k / riadky; // index stĺpca
System.out.print (matrix [i] [j] + "");
if ((k + 1) % riadky ==0) {
System.out.println (); // Nováline po každom stĺpci
}
}
}
public static void main (String [] args) {
int [] [] matrix ={
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
System.out.println ("Traversal stĺpca-Major (efektívne):");
TraversecolumnMAJOREFICTION (Matrix);
}
}
`` `
To vytvára rovnaký výstup ako metóda 1. Zisk účinnosti je zreteľnejší pri výrazne väčších matriciach.
Dôležité úvahy:
* obdĺžnikové matice: Obe metódy predpokladajú obdĺžnikovú maticu (všetky riadky majú rovnaký počet stĺpcov). Ak sa zaoberáte matricami nepravidelných tvarov, budete musieť pridať spracovanie chýb (napr. Kontrola „matice [i] .length` pre každý riadok).
* zubaté polia: Ak máte zubaté pole (kde riadky majú rôzne počty stĺpcov), prístup s jednou slučkou (metóda 2) nebude fungovať priamo. Museli by ste ho prispôsobiť, aby ste zvládli rôzne počty stĺpcov za riadok. Metóda 1 by sa ľahšie prispôsobila tomuto prípadu.
* Rozloženie pamäte: Aj keď môžete * prejsť * maticou v poradí stĺpcov-Major, polia Java sú uložené v pamäti pomocou poradia riadkov-Major. To znamená, že traverš na stĺpcoch-Major nebude taký, ktorý je tak efektívny ako trasingová row-Major.
Vyberte metódu, ktorá najlepšie vyhovuje vašim potrebám a veľkosti vašich matíc. Vo väčšine prípadov je metóda 1 ľahšie pochopiteľná a údržba, zatiaľ čo metóda 2 môže poskytnúť výkonnostnú výhodu pre extrémne veľké matice. Nezabudnite zvládnuť potenciálne výnimky, najmä s nepravidelnými matkami.