Počnimo s razlikama između niza One-dimension i Two-Dimension zajedno s usporednom tablicom.
Tablica usporedbe:
Osnova za usporedbu | Jednodimenzionalna | Dvodimenzionalan |
---|---|---|
Osnovni, temeljni | Pohranite jedan popis elemenata sličnog tipa podataka. | Pohranite 'popis popisa' ili 'niz polja' ili 'niz jednodimenzionalnih polja'. |
Deklaracija | / * deklaracija u C ++ upišite promjenjivo_ime [veličina]; * / / * deklaracija u Javi upišite variable_name []; variable_name = novi tip [veličina]; * / | / * deklaracija u C ++ upišite variable_name [size1] [size2]; * / / * deklaracija u Javi upišite variable_name = new int [size1] [size2]; * / |
Alternativna deklaracija | / * U Javi int [] a = novo int [10]; * / | / * U Javi int [] [] a = novo int [10] [20]; * / |
Ukupna veličina u bajtovima | Ukupno bajtova = veličina (tip podataka varijable niza) * veličina polja. | Ukupni bajtovi = veličina (tip podataka varijable niza) * veličina prvog indeksa * veličina drugog indeksa. |
Parametar primanja | Može se primiti u pokazivaču, veličinskom nizu ili nespomenutom nizu. | Primanje parametra mora definirati krajnju desnu dimenziju polja. |
Dimenzije | Jedna dimenzija. | Dvodimenzionalan. |
Definicija jednodimenzionalnog polja (1-D niz)
Jedno-dimenzionalni ili jedno-dimenzionalni niz se smatra "popisom varijabli sličnih tipova podataka", a svakoj se varijabli može jasno pristupiti navođenjem indeksa u uglatim zagradama ispred imena tog polja.
Razmotrimo u C ++ kontekstu
/ / Deklaracija u C ++ tipu varijable [veličina];
Ovdje tip prijavljuje vrstu podataka varijable niza, a veličina definira broj elemenata koji će polje držati.
Na primjer, ako želimo deklarirati niz koji će sadržavati bilancu svakog mjeseca u godini.
// primjer int month_balance [12];
Mjesec _balance je varijabla niza koja će sadržavati 12 cijelih brojeva, koji će predstavljati saldo svakog mjeseca. Sada, ako želimo pristupiti balansu mjeseca 'April', jednostavno smo morali spomenuti ime varijable iza koje slijedi uglasta zagrada koja sadrži vrijednost indeksa za mjesec travanj, tj. 'Month_balance [3]'. No, kao 'April' je četvrti mjesec u godini, ali smo spomenuli '[3]' jer svi nizovi imaju 0 kao indeks njihovog prvog elementa.
U Javi se to može učiniti kao
/ / deklaracija u Java tipu variable_name []; variable_name = novi tip [veličina];
U početku smo deklarirali varijablu niza svojim tipom, a zatim smo joj dodijelili memoriju koristeći 'new' i dodijelili 'new' deklariranoj varijabli niza. Uzmimo na primjer primjer ako želimo proglasiti niz koji će sadržavati bilancu u svakom mjesecu godine.
// primjer int month_balance []; month_balance = novi int [12];
Ovdje 'new' dodjeljuje memoriju nizu varijabli 'month_balance', tako da će sada mont_balance sada držati memoriju za 12 cjelobrojnih vrijednosti.
Nizovi se mogu inicijalizirati kada su deklarirani. Inicijalizator niza je popis vrijednosti odvojenih zarezima koje su okružene vitičastim zagradama.
//primjer
int month_balance = {100, 500, 200, 750, 850, 250, 630, 248, 790, 360, 450, 180};
Definicija dvodimenzionalnog polja (2-D niz)
I C ++ i Java podržavaju višedimenzionalni niz. Jedan od najjednostavnijih oblika višedimenzionalnog polja je dvodimenzionalni niz ili 2-D niz. Dvodimenzionalni niz može se smatrati 'nizom polja' ili 'nizom jednodimenzionalnih polja'. Za deklariranje dvodimenzionalne varijable niza, moramo navesti ime polja iza kojeg slijede dva uglaste zagrade gdje je drugi indeks drugi skup uglatih zagrada.
Dvodimenzionalni niz pohranjuje se u obliku matrice redova-stupaca, gdje prvi indeks označava red, a drugi indeks stupac. Drugi ili krajnji desni indeks indeksa se vrlo brzo mijenja u usporedbi s prvim ili lijevim indeksom dok pristupamo elementima niza.
/ / Deklaracija u C ++ tipu varijable [size1] [size2];
Na primjer, želimo pohraniti bilancu svakih 30 dana u svakom mjesecu u godini, u 2-D nizu.
// primjer int month_balance [12] [30];
U Javi se dvodimenzionalni niz dobiva
// Deklaracija u Java tipu variable_name = new int [size1] [size2]; // na primjer int month_balance = new int [12] [30];
Kako ne možemo proslijediti cijeli niz kao parametar funkciji, prosljeđuje se pokazivač na prvi element niza. Argument koji prima dvodimenzionalni niz mora definirati dimenziju desno. Najmanja desna dimenzija je potrebna jer je prevodiocu potrebna, da potvrdi dužinu svakog retka ako želi indeksirati polje ispravno. Ako se ne spominje indeks najviše desnice, kompajler ne može odrediti gdje počinje sljedeći redak.
// primjer u Java void receiveing_funct (int a [] [10]) {., , }
Kada se memorija dinamički dodijeli dvodimenzionalnom nizu u Javi, navodi se najveći indeks lijevo, a preostale dimenzije mogu se dodijeliti zasebno, tj. Svi redovi niza ne moraju biti iste veličine.
// primjer u Java int month_balance = new int [12] []; month_balance [0] = novi int [31]; month_balance [1] = novi int [28]; month_balance [2] = novi int [31]; month_balance [3] = novi int [30]; month_balance [4] = novi int [31]; month_balance [5] = novi int [30]; month_balance [6] = novi int [31]; month_balance [7] = novi int [30]; month_balance [8] = novi int [31]; month_balance [9] = novi int [30]; month_balance [10] = novi int [31]; month_balance [11] = novi int [30]; month_balance [12] = novi int [31];
Ali nema prednosti u tome.
Ključne razlike između jednodimenzionalnog i dvodimenzionalnog polja
- Jedno-dimenzionalni niz je popis čiji su elementi sličnog tipa podataka. S druge strane, dvodimenzionalni niz je popis čiji su elementi niz sličnih tipova podataka.
- U C ++, kada je jednodimenzionalni niz primljen od parametra funkcije primanja, nije potrebno spominjati veličinu niza jer kompajler razumije da je polje tipa (spomenuti tip podataka zajedno s parametrom) s nekom dužinom treba primiti. U dvodimenzionalnom nizu, drugi ili desni indeks treba biti naveden kako kompajler mora znati gdje se završava jedan redak i počinje novi redak.
- U C ++, jednodimenzionalni niz je pohranjen u susjedno memorijsko mjesto u indeksiranom redoslijedu, dok je dvodimenzionalno polje također pohranjeno u susjedno memorijsko mjesto, ali budući da postoji više redaka u dvodimenzionalnom nizu, pohrana nakon prvog reda slijedi drugi, treći i tako dalje.
Bilješka:
Prolazak oba, jednodimenzionalnog niza, kao i dvodimenzionalnog polja u funkciju je sličan, tj. Oba se prosljeđuju samo po imenu polja
// na primjer prolazna_funt (name_of_array);
Zaključak:
U oba jednodimenzionalnog i dvodimenzionalnog polja indeks igra vrlo važnu ulogu jer je to jedina stvar koja specifično identificira element u nizu. Oba jednodimenzionalna i dvodimenzionalna polja mogu se inicijalizirati u vrijeme njihove deklaracije.