Articles

GeeksforGeeks

Un array è un insieme di elementi memorizzati in posizioni di memoria contigue. L’idea è di memorizzare più elementi dello stesso tipo insieme. Ciò semplifica il calcolo della posizione di ciascun elemento semplicemente aggiungendo un offset a un valore di base, ovvero la posizione di memoria del primo elemento dell’array (generalmente indicata dal nome dell’array). Il valore di base è l’indice 0 e la differenza tra i due indici è l’offset.

Per semplicità, possiamo pensare a un array come una flotta di scale in cui su ogni gradino viene posizionato un valore (diciamo uno dei tuoi amici). Qui, è possibile identificare la posizione di uno dei tuoi amici, semplicemente conoscendo il conteggio del passo sono su.
Ricorda: “La posizione dell’indice successivo dipende dal tipo di dati che usiamo”.

array

L’immagine sopra può essere vista come una vista di livello superiore di una scala in cui ci si trova alla base della scala. Ogni elemento può essere identificato in modo univoco dal suo indice nell’array (in un modo simile a quello in cui potresti identificare i tuoi amici dal passo in cui erano nell’esempio precedente).

La dimensione dell’array

Nel linguaggio C l’array ha una dimensione fissa che significa che una volta data la dimensione, non può essere modificata, cioè non è possibile ridurla né espanderla. Il motivo era che per l’espansione se cambiamo la dimensione non possiamo essere sicuri (non è possibile ogni volta) che otteniamo la prossima posizione di memoria come gratuita. Il restringimento non funzionerà perché l’array, quando dichiarato, ottiene la memoria staticamente, e quindi il compilatore è l’unico a distruggerlo.

Tipi di indicizzazione in un array:

  • 0 (indicizzazione basata su zero): Il primo elemento dell’array è indicizzato da un pedice di 0
  • 1 (indicizzazione basata su uno): Il primo elemento dell’array è indicizzato dal pedice di 1
  • n (indicizzazione basata su n): L’indice di base di un array può essere liberamente scelto. Di solito, i linguaggi di programmazione che consentono l’indicizzazione basata su n consentono anche valori di indice negativi e altri tipi di dati scalari come enumerazioni o caratteri possono essere utilizzati come indice di array.

Vantaggi dell’utilizzo degli array:

  • Gli array consentono l’accesso casuale agli elementi. Ciò rende più veloce l’accesso agli elementi per posizione.
  • Gli array hanno una migliore località della cache che può fare una grande differenza nelle prestazioni.
  • Gli array rappresentano più elementi di dati dello stesso tipo utilizzando un singolo nome.

Svantaggi dell’utilizzo degli array:
Non è possibile modificare la dimensione, ad esempio una volta dichiarato l’array non è possibile modificarne le dimensioni a causa della memoria statica ad esso allocata. Qui l’inserimento e la cancellazione sono difficili in quanto gli elementi sono memorizzati in posizioni di memoria consecutive e anche l’operazione di spostamento è costosa.
Ora, se prendiamo un esempio di implementazione di stack di struttura dati utilizzando array ci sono alcuni difetti evidenti.

Prendiamo l’operazione POP dello stack. L’algoritmo andrebbe in questo modo.

  1. Controlla lo stack underflow
  2. Decrementa la parte superiore di 1

Quindi quello che stiamo facendo è che il puntatore all’elemento più in alto è decrement, il che significa che stiamo solo delimitando la nostra vista in realtà quell’elemento rimane lì a parlare dello spazio di memoria se hai un tipo di dati primitivo allora potrebbe essere ok ma l’oggetto di un array richiederebbe molta memoria.

Esempi –

// A character array in C/C++/Javachar arr1 = {'g', 'e', 'e', 'k', 's'};// An Integer array in C/C++/Javaint arr2 = {10, 20, 30, 40, 50};// Item at i'th index in array is typically accessed// as "arr". For example arr1 gives us 'g'// and arr2 gives us 40.

Di solito, un array di caratteri è chiamato ‘stringa’, mentre un array di int o float è chiamato semplicemente un array.

Applicazioni su Array

  1. Array memorizza gli elementi di dati dello stesso tipo di dati.
  2. Gli array possono essere utilizzati per la pianificazione della CPU.
  3. Utilizzato per implementare altre strutture dati come stack, code, heap, tabelle Hash, ecc.

Se ti piace GeeksforGeeks e vorresti contribuire, puoi anche scrivere un articolo usando contribute.geeksforgeeks.org o posta il tuo articolo a [email protected]. Vedere il tuo articolo che appare sulla pagina principale GeeksforGeeks e aiutare altri Geek.