Večdimenzionalni nizi v Javi

Večdimenzionalni nizi v Javi

Osnove polja v Javi Večdimenzionalni nizi lahko definiramo s preprostimi besedami kot niz nizov. Podatki v večdimenzionalnih nizih so shranjeni v obliki tabele (v glavnem vrstnem redu).

Sintaksa:

data_type [1. dimenzija][2. dimenzija][]..[N. dimenzija] ime_matrike = nov podatkovni_tip [velikost1][velikost2]…[velikostN];



kje:

  • data_type : vrsta podatkov, ki bodo shranjeni v matriki. Na primer: int, char itd.
  • razsežnost : dimenzija ustvarjene matrike. Na primer: 1D, 2D itd.
  • ime_matrike : ime matrike
  • velikost1, velikost2, …, velikostN : Velikosti dimenzij oz.

Primeri:

Two dimensional array: int[][] twoD_arr = new int[10][20];  Three dimensional array: int[][][] threeD_arr = new int[10][20][30]; 

Velikost večdimenzionalnih nizov : Skupno število elementov, ki jih je mogoče shraniti v večdimenzionalni niz, je mogoče izračunati z množenjem velikosti vseh dimenzij.

Na primer: Niz int[][] x = novo int[10][20] lahko shrani skupno (10*20) = 200 elementov. Podobno, array int[][][] x = novo int[5][10][20] lahko shrani skupno (5*10*20) = 1000 elementov.

Uporaba večdimenzionalne matrike

● Večdimenzionalni nizi se uporabljajo za shranjevanje podatkov v obliki tabele. Na primer, shranjevanje imenske številke in ocen študenta je mogoče preprosto izvesti z uporabo večdimenzionalnih nizov. Druga pogosta uporaba je shranjevanje slik v 3D nizih.

● V vprašanjih dinamičnega programiranja se uporabljajo večdimenzionalni nizi, ki se uporabljajo za predstavitev stanj problema.

● Poleg tega imajo tudi aplikacije v številnih standardnih algoritemskih problemih, kot so: množenje matrik, predstavitev matrike sosednosti v grafih, težave pri iskanju v mreži

Dvodimenzionalni niz (2D-matrika)

Dvodimenzionalni niz je najenostavnejša oblika večdimenzionalnega niza. Dvodimenzionalno matriko lahko za lažje razumevanje razumemo kot matriko enodimenzionalne matrike.

Posredna metoda deklaracije:

  • Deklaracija – sintaksa:
  data_type[][] array_name = new data_type[x][y];   For example: int[][] arr = new int[10][20]; 
  • Inicializacija – sintaksa:
  array_name[row_index][column_index] = value;   For example: arr[0][0] = 1; 

primer: 1

Java




import> java.io.*;> public> class> GFG {> > public> static> void> main(String[] args)> > {> > int> [][] arr => new> int> [> 10> ][> 20> ];> > arr[> 0> ][> 0> ] => 1> ;> > System.out.println(> 'arr[0][0] = '> + arr[> 0> ][> 0> ]);> > }> }>

Izhod

arr[0][0] = 1 

Primer: Implementacija 2D polja s privzetimi vrednostmi z matriko 4*4

Java




public> class> TwoDArray {> > public> static> void> main(String[] args) {> > int> rows => 4> ;> > int> columns => 4> ;> > int> [][] array => new> int> [rows][columns];> > int> value => 1> ;> > for> (> int> i => 0> ; i for (int j = 0; j array[i][j] = value; value++; } } System.out.println('The 2D array is: '); for (int i = 0; i for (int j = 0; j System.out.print(array[i][j] + ' '); } System.out.println(); } } }>

Izhod

The 2D array is: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 

Pojasnilo:

  • Število vrstic in stolpcev je podano s spremenljivkama vrstice in stolpci. 2D niz je ustvarjen z uporabo operatorja new, ki dodeli pomnilnik za niz. Velikost matrike je določena z vrsticami in stolpci.

Neposredna metoda deklaracije: Sintaksa:

  data_type[][] array_name = {     {valueR1C1, valueR1C2, ....},      {valueR2C1, valueR2C2, ....}     };   For example: int[][] arr = {{1, 2}, {3, 4}}; 

primer:

Java




import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > int> [][] arr = { {> 1> ,> 2> }, {> 3> ,> 4> } };> > for> (> int> i => 0> ; i <> 2> ; i++)> > for> (> int> j => 0> ; j <> 2> ; j++)> > System.out.println(> 'arr['> + i +> ']['> + j +> '] = '> > + arr[i][j]);> > }> }>

Izhod

arr[0][0] = 1 arr[0][1] = 2 arr[1][0] = 3 arr[1][1] = 4 

Dostop do elementov dvodimenzionalnih nizov

Elementi v dvodimenzionalnih nizih so običajno označeni z x[i][j] kjer je 'i' številka vrstice in 'j' številka stolpca.

Sintaksa:

x[row_index][column_index] 

Na primer:

int[][] arr = new int[10][20]; arr[0][0] = 1; 

Zgornji primer predstavlja element v prvi vrstici in prvem stolpcu. Opomba : V nizih, če je velikost niza N. Njegov indeks bo od 0 do N-1. Zato je za row_index 2 dejanska številka vrstice 2+1 = 3. primer:

Java




import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > int> [][] arr = { {> 1> ,> 2> }, {> 3> ,> 4> } };> > System.out.println(> 'arr[0][0] = '> + arr[> 0> ][> 0> ]);> > }> }>

Izhod

arr[0][0] = 1 

Predstavitev 2D polja v obliki tabele:

Dvodimenzionalno matriko lahko vidimo kot tabelo z vrsticami 'x' in stolpci 'y', kjer se številka vrstice giblje od 0 do (x-1), številka stolpca pa se giblje od 0 do (y-1). Spodaj je prikazan dvodimenzionalni niz 'x' s 3 vrsticami in 3 stolpci:

dvo-d

Natisnite 2D matriko v obliki tabele:

Če želite izpisati vse elemente dvodimenzionalne matrike, uporabite ugnezdene zanke. Za to sta potrebni dve zanki for, ena za prečkanje vrstic in druga za prečkanje stolpcev.

primer:

Java




import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > int> [][] arr = { {> 1> ,> 2> }, {> 3> ,> 4> } };> > for> (> int> i => 0> ; i <> 2> ; i++) {> > for> (> int> j => 0> ; j <> 2> ; j++) {> > System.out.print(arr[i][j] +> ' '> );> > }> > System.out.println();> > }> > }> }>

Izhod

1 2 3 4 

Primer: Izvedba 2D polja z vnosom uporabnika

Java




import> java.util.Scanner;> public> class> Main {> > public> static> void> main(String[] args)> > {> > Scanner scan => new> Scanner(System.in);> > System.out.print(> 'Enter number of rows: '> );> > int> rows = scan.nextInt();> > System.out.print(> 'Enter number of columns: '> );> > int> columns = scan.nextInt();> > int> [][] multidimensionalArray=> new> int> [rows][columns];> > // Now you can use the array like a regular> > // 2-dimensional array> > for> (> int> i => 0> ; i for (int j = 0; j multidimensionalArray[i][j]= (i + 1) * (j + 1); } } for (int i = 0; i for (int j = 0; j System.out.print(multidimensionalArray[i][j]+ ' '); } System.out.println(); } scan.close(); } }>

Izhod

Enter number of rows: 3 Enter number of columns: 3 1 2 3  2 4 6  3 6 9 
  • Ta koda pozove uporabnika, da vnese število vrstic in stolpcev za 2-dimenzionalni niz. Razred Scanner se uporablja za branje uporabniškega vnosa. Nato ustvari 2-dimenzionalno matriko celih števil z določenim številom vrstic in stolpcev ter vsakemu elementu matrike dodeli i*j.
  • Če želite ustvariti večdimenzionalno matriko z več kot dvema dimenzijama, lahko uporabite enak pristop za ustvarjanje matrike matrik. Če želite na primer ustvariti 3-dimenzionalno matriko, lahko ustvarite matriko 2-dimenzionalnih matrik.

Tridimenzionalni niz (3D-matrika)

Tridimenzionalni niz je kompleksna oblika večdimenzionalnega niza. Tridimenzionalni niz lahko za lažje razumevanje razumemo kot niz dvodimenzionalnih nizov.

Posredna metoda deklaracije:

  • Deklaracija – sintaksa:
  data_type[][][] array_name = new data_type[x][y][z];   For example: int[][][] arr = new int[10][20][30]; 
  • Inicializacija – sintaksa:
  array_name[array_index][row_index][column_index] = value;   For example: arr[0][0][0] = 1; 

primer:

Java




import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > int> [][][] arr => new> int> [> 10> ][> 20> ][> 30> ];> > arr[> 0> ][> 0> ][> 0> ] => 1> ;> > System.out.println(> 'arr[0][0][0] = '> + arr[> 0> ][> 0> ][> 0> ]);> > }> }>

Izhod

arr[0][0][0] = 1 

Neposredna metoda deklaracije: Sintaksa:

  data_type[][][] array_name = {     {     {valueA1R1C1, valueA1R1C2, ....},      {valueA1R2C1, valueA1R2C2, ....}     },     {     {valueA2R1C1, valueA2R1C2, ....},      {valueA2R2C1, valueA2R2C2, ....}     }     };   For example: int[][][] arr = { {{1, 2}, {3, 4}}, {{5, 6}, {7, 8}} }; 

primer:

Java




import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > int> [][][] arr = { { {> 1> ,> 2> }, {> 3> ,> 4> } }, { {> 5> ,> 6> }, {> 7> ,> 8> } } };> > for> (> int> i => 0> ; i <> 2> ; i++)> > for> (> int> j => 0> ; j <> 2> ; j++)> > for> (> int> z => 0> ; z <> 2> ; z++)> > System.out.println(> 'arr['> + i> > +> ']['> > + j +> ']['> > + z +> '] = '> > + arr[i][j][z]);> > }> }>

Izhod

arr[0][0][0] = 1 arr[0][0][1] = 2 arr[0][1][0] = 3 arr[0][1][1] = 4 arr[1][0][0] = 5 arr[1][0][1] = 6 arr[1][1][0] = 7 arr[1][1][1] = 8 

Dostop do elementov tridimenzionalnih nizov

Elementi v tridimenzionalnih nizih so običajno označeni z x[i][j][k] kjer je 'i' številka polja, 'j' je številka vrstice in 'k' je številka stolpca.

Sintaksa:

x[array_index][row_index][column_index] 

Na primer:

int[][][] arr = new int[10][20][30]; arr[0][0][0] = 1; 

Zgornji primer predstavlja element, ki je prisoten v prvi vrstici in prvem stolpcu prvega niza v deklariranem 3D nizu.

Opomba : V nizih, če je velikost niza N. Njegov indeks bo od 0 do N-1. Zato je za row_index 2 dejanska številka vrstice 2+1 = 3.

primer:

Java




import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > int> [][][] arr = { { {> 1> ,> 2> }, {> 3> ,> 4> } }, { {> 5> ,> 6> }, {> 7> ,> 8> } } };> > System.out.println(> 'arr[0][0][0] = '> + arr[> 0> ][> 0> ][> 0> ]);> > }> }>

Izhod

arr[0][0][0] = 1 

Predstavitev 3D polja v obliki tabele:

Tridimenzionalno matriko lahko vidimo kot tabelo matrik z vrsticami 'x' in stolpci 'y', kjer je številka vrstice od 0 do (x-1), številka stolpca pa od 0 do (y-1). Spodaj je prikazan tridimenzionalni niz s tremi nizi, ki vsebujejo 3 vrstice in 3 stolpce:

Natisnite 3D matriko v obliki tabele:

Če želite izpisati vse elemente tridimenzionalne matrike, uporabite ugnezdene zanke. Za to so potrebne tri zanke for, ena za prečkanje nizov, druga za prečkanje vrstic in druga za prečkanje stolpcev.

primer:

Java




import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > int> [][][] arr = { { {> 1> ,> 2> }, {> 3> ,> 4> } },> > { {> 5> ,> 6> }, {> 7> ,> 8> } } };> > for> (> int> i => 0> ; i <> 2> ; i++) {> > for> (> int> j => 0> ; j <> 2> ; j++) {> > for> (> int> k => 0> ; k <> 2> ; k++) {> > System.out.print(arr[i][j][k] +> ' '> );> > }> > System.out.println();> > }> > System.out.println();> > }> > }> }>

Izhod

1 2 3 4 5 6 7 8 

Vstavljanje večdimenzionalne matrike med izvajanjem:

Ta tema je prisiljena n sprejeti uporabniško definiran vnos v večdimenzionalni niz med izvajanjem. Osredotočen je na to, da uporabnik najprej vnese vse vnose v program med izvajanjem in po vseh vnesenih vnosih bo program dal izhod glede na vsak vhod ustrezno. Uporabno je, ko želi uporabnik najprej vnesti več testnih primerov z več različnimi vrednostmi in ko bo vse to opravljeno, bo program začel zagotavljati izhod. Kot primer poiščimo skupno število sodih in lihih števil v vhodni matriki. Tukaj bomo uporabili koncept 2-dimenzionalne matrike.

Tukaj je nekaj točk, ki pojasnjujejo uporabo različnih elementov v prihajajoči kodi:

  • Celo število vrstic se obravnava kot število testnih primerov, vrednosti stolpcev pa se štejejo kot vrednosti v vsakem testnem primeru.
  • Ena zanka for() se uporablja za posodabljanje številke testnega primera, druga zanka for() pa za prevzem ustreznih vrednosti matrike.
  • Ko so vsi vnosi opravljeni, se znova uporabita dve zanki for() na enak način za izvedbo programa v skladu s podanim pogojem.
  • Prva vrstica vnosa je skupno število testnih primerov.
  • Druga vrstica prikazuje skupno število vrednosti prve matrike.
  • Tretja vrstica podaja vrednosti matrike in tako naprej.

Izvedba:

Java




import> java.io.*;> import> java.util.Scanner;> class> GFGTestCase {> > public> static> void> main(String[] args)> > {> > // Scanner class to take> > // values from console> > Scanner scanner => new> Scanner(System.in);> > // totalTestCases = total> > // number of TestCases> > // eachTestCaseValues => > // values in each TestCase as> > // an Array values> > int> totalTestCases, eachTestCaseValues;> > // takes total number of> > // TestCases as integer number> > totalTestCases = scanner.nextInt();> > // An array is formed as row> > // values for total testCases> > int> [][] arrayMain => new> int> [totalTestCases][];> > // for loop to take input of> > // values in each TestCase> > for> (> int> i => 0> ; i eachTestCaseValues = scanner.nextInt(); arrayMain[i] = new int[eachTestCaseValues]; for (int j = 0; j arrayMain[i][j] = scanner.nextInt(); } } // All input entry is done. // Start executing output // according to condition provided for (int i = 0; i // Initialize total number of // even & odd numbers to zero int nEvenNumbers = 0, nOddNumbers = 0; // prints TestCase number with // total number of its arguments System.out.println('TestCase ' + i + ' with ' + arrayMain[i].length + ' values:'); for (int j = 0; j System.out.print(arrayMain[i][j] + ' '); // even & odd counter updated as // eligible number is found if (arrayMain[i][j] % 2 == 0) { nEvenNumbers++; } else { nOddNumbers++; } } System.out.println(); // Prints total numbers of // even & odd System.out.println( 'Total Even numbers: ' + nEvenNumbers + ', Total Odd numbers: ' + nOddNumbers); } } } // This code is contributed by Udayan Kamble.>

Izhod:

  Input:  2 2 1 2 3 1 2 3    Output:  TestCase 0 with 2 values: 1 2  Total Even numbers: 1, Total Odd numbers: 1 TestCase 1 with 3 values: 1 2 3  Total Even numbers: 1, Total Odd numbers: 2    Input:  3 8 1 2 3 4 5 11 55 66 5 100 101 55 35 108 6 3 80 11 2 1 5    Output:  TestCase 0 with 8 values: 1 2 3 4 5 11 55 66  Total Even numbers: 3, Total Odd numbers: 5 TestCase 1 with 5 values: 100 101 55 35 108  Total Even numbers: 2, Total Odd numbers: 3 TestCase 2 with 6 values: 3 80 11 2 1 5  Total Even numbers: 2, Total Odd numbers: 4 


Top Članki

Kategorija

Zanimivi Članki