Introducción a las arrays

¿Qué es una array?

Una array es una colección de elementos del mismo tipo de datos almacenados en ubicaciones de memoria contiguas. 

Esto facilita el cálculo de la posición de cada elemento simplemente agregando un desplazamiento a un valor base, es decir, la ubicación de memoria del primer elemento de la array (generalmente indicado por el nombre de la array). El valor base es el índice 0 y la diferencia entre los dos índices es el desplazamiento .

Para simplificar, podemos pensar en una array como una flota de escaleras donde en cada escalón se coloca un valor (digamos, uno de tus amigos). Aquí, puede identificar la ubicación de cualquiera de sus amigos simplemente sabiendo el recuento del paso en el que se encuentran. 
Recuerde: “La ubicación del siguiente índice depende del tipo de datos que usemos”. 

array

 

Complete Interview Preparation - GFG

En lenguaje C, la array tiene un tamaño fijo, lo que significa que una vez que se le asigna el tamaño, no se puede cambiar, es decir, no se puede reducir ni expandir. La razón fue que para expandir si cambiamos el tamaño no podemos estar seguros (no siempre es posible) de obtener la siguiente ubicación de memoria de forma gratuita. La reducción no funcionará porque la array, cuando se declara, obtiene memoria asignada estáticamente y, por lo tanto, el compilador es el único que puede destruirla.

Tipos de indexación en una array: 

  • 0 (indexación basada en cero): el primer elemento de la array está indexado por un subíndice de 0.
  • 1 (indexación basada en uno): el primer elemento de la array está indexado por el subíndice de 1.
  • n (indexación basada en N): el índice base de una array se puede elegir libremente. Por lo general, los lenguajes de programación que permiten la indexación basada en n también permiten valores de índice negativos, y otros tipos de datos escalares como enumeraciones o caracteres se pueden usar como un índice de array.

Array Data Structure

¿Cómo se inicializa un Array?

De forma predeterminada, la array no está inicializada y ningún elemento de la array se establece en ningún valor. Sin embargo, para el correcto funcionamiento de la array, la inicialización de la array se vuelve importante. La inicialización de la array se puede realizar mediante los siguientes métodos:

1. No pasar ningún valor dentro del inicializador: se puede inicializar la array definiendo el tamaño de la array y no pasando ningún valor dentro del inicializador.

Sintaxis:

int array[ 5 ] = { };

2. Pasando valores específicos dentro del inicializador: se puede inicializar la array definiendo el tamaño de la array y pasando valores específicos dentro del inicializador. 

Sintaxis:

int arr[ 5 ] = { 1 , 2 , 3 , 4 , 5 };

Nota: El conteo de elementos dentro de «{ }», debe ser menor que el tamaño de la array. 
Si el conteo de elementos dentro de «{ }» es menor que el tamaño de la array, las posiciones restantes se consideran ‘ 0’.

Sintaxis:

array int[ 5 ] = { 1 , 2 , 3 } ;

3. Al pasar valores específicos dentro del inicializador pero sin declarar el tamaño: uno puede inicializar la array pasando valores específicos dentro del inicializador y sin mencionar particularmente el tamaño, el compilador interpreta el tamaño.

Sintaxis:

int arr[ ] = { 1 , 2 , 3 , 4 , 5 };

4. Inicialización universal: después de la adopción de la inicialización universal en C++, se puede evitar el uso del signo igual entre la declaración y el inicializador. 

Sintaxis:

int arr[ ] { 1 , 2 , 3 , 4 , 5 };

Para saber más sobre la inicialización de arrays, haga clic aquí .

¿Cuáles son las diferentes operaciones en la array?

Las arrays permiten el acceso aleatorio a los elementos. Esto hace que el acceso a los elementos por posición sea más rápido. Por lo tanto, operaciones como la búsqueda, la inserción y el acceso se vuelven realmente eficientes. Se puede acceder a los elementos de la array mediante los bucles.

1. Inserción en Array:

Intentamos insertar un valor en una posición de índice de array en particular, ya que la array proporciona acceso aleatorio, se puede hacer fácilmente usando el operador de asignación.

Pseudocódigo:

// para insertar un valor = 10 en la posición de índice 2;

array[ 2 ] = 10;

Complejidad del tiempo: 

  • O(1) para insertar un solo elemento
  • O(N) para insertar todos los elementos de la array [donde N es el tamaño de la array]

2. Acceder a elementos en Array:

Acceder a los elementos de la array se vuelve extremadamente importante para realizar operaciones en las arrays.

Pseudocódigo:

// para acceder al elemento de array en la posición de índice 2, simplemente podemos escribir

retorno arr[2];

Complejidad de tiempo: O(1)

3. Buscando en Array: 

Intentamos encontrar un valor particular en la array, para hacerlo necesitamos acceder a todos los elementos de la array y buscar el valor particular.

Pseudocódigo:

// buscando el valor 2 en la array;

Bucle de i = 0 a 5:
    comprueba si arr[i] = 2:
        devuelve verdadero;

Complejidad de tiempo: O(N), donde N es el tamaño de la array.

Aquí está el código para trabajar con una array:

C++

#include <iostream>
using namespace std;
 
int main()
{
    // Creating an integer array
    // named arr of size 10.
    int arr[10];
    // accessing element at 0 index
    // and setting its value to 5.
    arr[0] = 5;
    // access and print value at 0
    // index we get the output as 5.
    cout << arr[0];
    return 0;
}

C

#include <stdio.h>
 
int main()
{
 
    // Creating an integer array
    // named arr of size 10.
    int arr[10];
    // accessing element at 0 index
    // and setting its value to 5.
    arr[0] = 5;
    // access and print value at 0
    // index we get the output as 5.
    printf("%d", arr[0]);
 
    return 0;
}

Java

class GFG
{
    public static void main (String[] args)
    {   
       
      // Creating an integer array
      // named arr of size 10.
      int[] arr = new int[10];
       
      // accessing element at 0 index
      // and setting its value to 5.
      arr[0] = 5;
       
      // access and print value at 0
      // index we get the output as 5.
      System.out.println(arr[0]);   
           
    }
}
 
// This code is contributed by muditj148.
Producción

5

Aquí se imprime el valor 5 porque el primer elemento tiene índice cero y en el índice cero ya le asignamos el valor 5.

Tipos de arreglos: 

  1. Array unidimensional (arrays 1-D)
  2. array multidimensional

Para conocer las diferencias entre arrays unidimensionales y multidimensionales, haga clic aquí .

Ventajas de usar arreglos: 

  • Las arrays permiten el acceso aleatorio a los elementos. Esto hace que el acceso a los elementos por posición sea más rápido.
  • Las arrays tienen una mejor  localidad de caché  , lo que hace una gran diferencia en el rendimiento.
  • Las arrays representan múltiples elementos de datos del mismo tipo usando un solo nombre.

Desventajas de usar arreglos: 

No puede cambiar el tamaño, es decir, una vez que haya declarado la array, no puede cambiar su tamaño debido a la asignación de memoria estática. Aquí, la(s) inserción(es) y la(s) eliminación(es) son difíciles ya que los elementos se almacenan en ubicaciones de memoria consecutivas y la operación de cambio también es costosa.

Ahora, si toma un ejemplo de la implementación de la estructura de datos Stack usando una array, hay algunas fallas obvias. 
Tomemos la operación POP de la pila. El algoritmo sería algo como esto. 

  1. Compruebe el subdesbordamiento de la pila
  2. Disminuir la parte superior en 1

Lo que estamos haciendo aquí es que el puntero al elemento superior disminuye, lo que significa que solo estamos limitando nuestra vista, y en realidad ese elemento permanece allí ocupando el espacio de la memoria. Si tiene una array (como una pila) de cualquier tipo de datos primitivo, entonces podría estar bien. Pero en el caso de una array de Objetos, se necesitaría mucha memoria.

Ejemplos – 

// Una array de caracteres en C/C++/Java
char arr1[] = {‘g’, ‘e’, ​​’e’, ​​’k’, ‘s’};

// Una array de enteros en C/C++/Java
int arr2[] = {10, 20, 30, 40, 50};

// Normalmente se accede al elemento en el i-ésimo índice de la array como “arr[i]”.  
Por ejemplo:
arr1[0] nos da ‘g’
arr2[3] nos da 40

Por lo general, una array de caracteres se denomina «string», mientras que una array de enteros o flotantes se denomina simplemente array.

Aplicaciones en array

  • Array almacena elementos de datos del mismo tipo de datos.
  • Las arrays se utilizan cuando se conoce el tamaño del conjunto de datos.
  • Se utiliza para resolver problemas de arrays.
  • Aplicado como una tabla de búsqueda en la computadora.
  • Los registros de las bases de datos también son implementados por la array.
  • Ayuda a implementar el algoritmo de clasificación.
  • Las diferentes variables del mismo tipo se pueden guardar bajo un mismo nombre.
  • Las arrays se pueden utilizar para la programación de la CPU.
  • Se utiliza para implementar otras estructuras de datos como pilas, colas, montones, tablas hash, etc.

Para obtener más información sobre las ventajas, desventajas y aplicaciones de los arreglos, haga clic aquí .

Preguntas frecuentes (FAQ) sobre estructuras de datos de array

1.

  • Arrays indexadas
  • Arrays multidimensionales
  • arrays asociativas

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *