logo

Kuo skiriasi sąrašai ir masyvai?

Programuojant sąrašai ir masyvai yra duomenų struktūros, naudojamos duomenims tvarkyti ir saugoti. Abi turi savo unikalių savybių ir tikslų. Sąrašai yra dinamiškas ir lankstus , leidžianti lengvai keisti dydį vykdymo metu masyvai yra statinis su fiksuoto dydžio . Šis skirtumas turi įtakos atminties naudojimui ir našumui.

Turinys



Kas yra sąrašai?

Sąrašai yra universali programavimo duomenų struktūra, skirta elementų rinkiniui, kurį galima lanksčiai tvarkyti. skirtingi duomenų tipai . Skirtingai nuo masyvų, sąrašai yra dinamiškas , tai reiškia, kad jų dydis gali keistis vykdant programą. Dėl šio pritaikomumo sąrašai ypač naudingi atliekant užduotis, susijusias su elementų pridėjimu arba pašalinimu. Sąrašai suteikia kūrėjams patogią sąsają duomenims valdyti ir tvarkyti, todėl galima efektyviai atlikti tokias operacijas kaip pridedant , įterpiant , arba ištrynimas elementai. Galimybė dinamiškai koreguoti jų dydį daro sąrašus galingu įrankiu įvairiems duomenų kiekiams programoje tvarkyti.

Kas yra masyvai?

Masyvai yra pagrindinė programavimo duomenų struktūra, leidžianti saugoti elementų rinkinį to paties tipo duomenų gretimoje atminties bloke. Kiekvienas masyvo elementas identifikuojamas pagal indeksą, nurodantį jo padėtį. Pagrindinė masyvų savybė yra ta, kad naudojant šiuos indeksus jie siūlo greitą ir tiesioginę prieigą prie elementų. Jie suteikia sistemingą būdą tvarkyti ir valdyti duomenis, todėl jie yra veiksmingi atgauti , modifikuoti , ir manipuliuoti masyve saugoma informacija. Masyvai yra plačiai naudojami įvairiose programavimo kalbose dėl jų paprastumo ir efektyvumo tvarkant užsakytus duomenų rinkinius.

Skirtumas tarp sąrašų ir masyvų:

Aspektas



Masyvai

Sąrašai

Dydis



Masyvai turi fiksuotą dydį, nustatytą kūrimo metu.

Sąrašai yra dinamiški ir gali keistis vykdymo metu.

Duomenų tipai

Visi masyvo elementai turi būti to paties tipo duomenų.

Sąrašai gali talpinti skirtingų duomenų tipų elementus.

Atminties paskirstymas

Inicijavimo metu viso masyvo atmintis paskirstoma iš karto.

Sąrašai dinamiškai paskirsto atmintį, kai elementai pridedami arba pašalinami.

Prieigos laikas

Masyvai suteikia nuolatinę prieigą prie elementų indeksuodami.

Sąrašų prieigos laikas gali šiek tiek skirtis dėl dinaminio dydžio keitimo.

Lankstumas

Masyvai yra mažiau lankstūs, nes jų dydžio negalima lengvai pakeisti.

Sąrašai yra lankstesni, todėl galima lengvai pridėti arba pašalinti elementus.

Atminties efektyvumas

Moore mašinos pavyzdžiai

Gali išeikvoti atmintį, jei dydis didesnis nei būtina.

Dėl dinaminio paskirstymo taupo atmintį.

Bendrieji įgyvendinimai

Įprasta tokiomis kalbomis kaip C/C++.

Įprasta tokiomis kalbomis kaip Python ir Java.

Sąrašų įgyvendinimas:

Pateiktame Python kodo pavyzdyje sąrašas inicijuojamas, kad būtų saugomi sveikieji skaičiai (10, 20, 30). Elementai pridedami, pasiekiami naudojant indeksą, modifikuojami ir pašalinami. „Python“ pridėjimui naudojamas pridėjimo metodas, o ištrynimui – pašalinti. Pavyzdyje parodomos pagrindinės sąrašų kūrimo, keitimo ir valdymo šiomis programavimo kalbomis operacijos.

C++




#include> #include> int> main() {> >// Creating an empty vector> >std::vector<>int>>myArray;> >// Adding elements to the vector> >myArray.push_back(10);> >myArray.push_back(20);> >myArray.push_back(30);> >// Displaying the elements in the vector> >std::cout <<>'Elements in the vector: '>;> >for> (>int> num : myArray) {> >std::cout << num <<>' '>;> >}> >std::cout << std::endl;> >// Accessing elements by index> >int> firstElement = myArray[0];> >int> secondElement = myArray[1];> >// Modifying an element> >myArray[1] = 25;> >// Removing an element by value> >for> (>auto> it = myArray.begin(); it != myArray.end(); ++it) {> >if> (*it == 30) {> >myArray.erase(it);> >break>;> >}> >}> >// Displaying the updated vector> >std::cout <<>'Updated vector: '>;> >for> (>int> num : myArray) {> >std::cout << num <<>' '>;> >}> >std::cout << std::endl;> >return> 0;> }> // This code is contributed by shivamgupta0987654321>

>

>

Java




import> java.util.ArrayList;> import> java.util.Iterator;> public> class> Main {> >public> static> void> main(String[] args)> >{> >// Creating an empty ArrayList> >ArrayList myArray =>new> ArrayList();> >// Adding elements to the ArrayList> >myArray.add(>10>);> >myArray.add(>20>);> >myArray.add(>30>);> >// Displaying the elements in the ArrayList> >System.out.print(>'Elements in the ArrayList: '>);> >for> (>int> num : myArray) {> >System.out.print(num +>' '>);> >}> >System.out.println();> >// Accessing elements by index> >int> firstElement = myArray.get(>0>);> >int> secondElement = myArray.get(>1>);> >// Modifying an element> >myArray.set(>1>,>25>);> >// Removing an element by value> >Iterator iterator = myArray.iterator();> >while> (iterator.hasNext()) {> >int> element = iterator.next();> >if> (element ==>30>) {> >iterator.remove();> >break>;> >}> >}> >// Displaying the updated ArrayList> >System.out.print(>'Updated ArrayList: '>);> >for> (>int> num : myArray) {> >System.out.print(num +>' '>);> >}> >System.out.println();> >}> }>

>

>

Python3




# Creating an empty list> my_list>=> []> # Adding elements to the list> my_list.append(>10>)> my_list.append(>20>)> my_list.append(>30>)> # Displaying the elements in the list> print>('Elements>in> the>list>:', my_list)> # Accessing elements by index> first_element>=> my_list[>0>]> second_element>=> my_list[>1>]> # Modifying an element> my_list[>1>]>=> 25> # Removing an element> my_list.remove(>30>)> # Displaying the updated list> print>('Updated>list>:', my_list)>

>

>

C#




using> System;> using> System.Collections.Generic;> class> Program> {> >static> void> Main()> >{> >// Creating an empty list> >List<>int>>myArray =>>List<>int>>();> >// Adding elements to the list> >myArray.Add(10);> >myArray.Add(20);> >myArray.Add(30);> >// Displaying the elements in the list> >Console.Write(>'Elements in the list: '>);> >foreach> (>int> num>in> myArray)> >{> >Console.Write(num +>' '>);> >}> >Console.WriteLine();> >// Accessing elements by index> >int> firstElement = myArray[0];> >int> secondElement = myArray[1];> >// Modifying an element> >myArray[1] = 25;> >// Removing an element by value> >for> (>int> i = 0; i { if (myArray[i] == 30) { myArray.RemoveAt(i); break; } } // Displaying the updated list Console.Write('Updated list: '); foreach (int num in myArray) { Console.Write(num + ' '); } Console.WriteLine(); } }>

>

>

Javascript




// Creating an empty array> let myArray = [];> // Adding elements to the array> myArray.push(10);> myArray.push(20);> myArray.push(30);> // Displaying the elements in the array> console.log(>'Elements in the array:'>, myArray);> // Accessing elements by index> let firstElement = myArray[0];> let secondElement = myArray[1];> // Modifying an element> myArray[1] = 25;> // Removing an element (in this case, removing by value)> let indexToRemove = myArray.indexOf(30);> if> (indexToRemove !== -1) {> >myArray.splice(indexToRemove, 1);> }> // Displaying the updated array> console.log(>'Updated array:'>, myArray);>

>

>

Išvestis

Elements in the vector: 10 20 30 Updated vector: 10 25>

Masyvų įgyvendinimas:

C++, C, Python, Java ir JavaScript, kodas sukuria masyvą su elementais (10, 20, 30), pasiekia ir modifikuoja elementus pagal indeksą ir rodo atnaujintą masyvą. Sintaksė ir konkretūs metodai įvairiose kalbose skiriasi, tačiau pagrindinės masyvo operacijos išlieka nuoseklios, parodydamos, kaip manipuliuoti ir kartoti masyvais.

C++




#include> using> namespace> std;> int> main() {> >// Creating an array> >int> myArray[3] = {10, 20, 30};> >// Accessing elements by index> >int> firstElement = myArray[0];> >int> secondElement = myArray[1];> >// Modifying an element> >myArray[1] = 25;> >// Displaying the elements in the array> >for> (>int> i = 0; i <3; ++i) {> >cout << myArray[i] << ' ';> >}> >return> 0;> }>

>

>

C




#include> int> main() {> >// Creating an array> >int> myArray[3] = {10, 20, 30};> >// Accessing elements by index> >int> firstElement = myArray[0];> >int> secondElement = myArray[1];> >// Modifying an element> >myArray[1] = 25;> >// Displaying the elements in the array> >for> (>int> i = 0; i <3; ++i) {> >printf>('%d ', myArray[i]);> >}> >return> 0;> }>

>

>

Java




public> class> ArrayExample {> >public> static> void> main(String[] args) {> >// Creating an array> >int>[] myArray = {>10>,>20>,>30>};> >// Accessing elements by index> >int> firstElement = myArray[>0>];> >int> secondElement = myArray[>1>];> >// Modifying an element> >myArray[>1>] =>25>;> >// Displaying the elements in the array> >for> (>int> i =>0>; i <>3>; ++i) {> >System.out.print(myArray[i] + ' ');> >}> >}> }>

>

>

Python3

ketvirtį versle




# Creating an array (using a list)> my_array>=> [>10>,>20>,>30>]> # Accessing elements by index> first_element>=> my_array[>0>]> second_element>=> my_array[>1>]> # Modifying an element> my_array[>1>]>=> 25> # Displaying the elements in the array> for> element>in> my_array:> >print>(element, end>=>' ')>

>

>

C#




using> System;> class> Program> {> >static> void> Main()> >{> >// Creating an array> >int>[] myArray = { 10, 20, 30 };> >// Modifying an element> >myArray[1] = 25;> >// Displaying the elements in the array> >foreach> (>int> element>in> myArray)> >{> >Console.Write(element + ' ');> >}> >}> }>

>

>

Javascript




// Creating an array> let myArray = [10, 20, 30];> // Accessing elements by index> let firstElement = myArray[0];> let secondElement = myArray[1];> // Modifying an element> myArray[1] = 25;> // Displaying the elements in the array> for> (let i = 0; i console.log(myArray[i]); }>

>

>

Išvestis

10 25 30>

Apibendrinant, masyvai siūlo a fiksuoto dydžio , gretimos atminties struktūra su efektyvi prieiga prie elementų kadangi sąrašai numato dinaminis dydis , lankstumas , ir integruoti metodai kad būtų lengviau manipuliuoti. Pasirinkimas tarp dviejų priklauso nuo konkrečių programos reikalavimų, o masyvai puikiai tinka scenarijuose, kai fiksuoto dydžio ir tiesioginė prieiga prie atminties yra labai svarbi, o sąrašai yra naudingi dinaminiams duomenims ir įvairioms operacijoms. Galiausiai, suprasdami unikalias kiekvienos duomenų struktūros savybes, kūrėjai gali priimti pagrįstus sprendimus, pagrįstus jų programavimo užduočių poreikiais.