Saltar al contenido

¿Por qué acceder a un elemento en un array tomar tiempo constante?

Agradeceríamos tu apoyo para difundir nuestros escritos en referencia a las ciencias de la computación.

Solución:

los array, efectivamente, se conoce por una ubicación de memoria (un puntero). Accediendo a[3] se puede encontrar en tiempo constante, ya que es solo ubicación_de_a+3*tamaño(int).

En C, puedes ver esto directamente. Recuerda, a[3] es lo mismo que *(a+3) – que es un poco más claro en términos de lo que está haciendo (desreferenciando el puntero “3 elementos”).

un array de 10 variables enteras, con índices del 0 al 9, pueden almacenarse como 10 palabras en las direcciones de memoria 2000, 2004, 2008, … 2036, de modo que el elemento con índice i tenga la dirección 2000 + 4 × i. este proceso toma una multiplicación y una suma. Dado que estas dos operaciones toman un tiempo constante, podemos decir que el acceso se puede realizar en un tiempo constante.

Solo para ser completo, “¿a qué estructura se accede en tiempo lineal?” Se accede a una estructura de lista enlazada en tiempo lineal. Para obtener el n elemento por el que tienes que viajar n-1 elementos anteriores. Ya sabes, como una grabadora o un casete VHS, donde ir al final de la cinta/VHS tenías que esperar mucho tiempo 🙂

Un array es más similar a un disco duro: cada punto es accesible en tiempo “constante” 🙂

Esta es la razón por la cual la memoria RAM de una computadora se llama RAM: memoria de acceso aleatorio. Puede ir a cualquier ubicación si conoce su dirección sin atravesar toda la memoria antes de esa ubicación.

Algunas personas me dijeron que el acceso a la HD no es realmente en tiempo constante (donde por acceso me refiero a “tiempo para colocar la cabeza y leer un sector de la HD”). Tengo que decir que no estoy seguro de ello. He buscado en Google y no he encontrado a nadie que hable de ello. SÍ sé que el tiempo no es lineal, porque todavía se accede al azar. Al final, si cree que el acceso a HD no es lo suficientemente constante para usted (pero entonces, ¿qué es constante? ¿El acceso a la RAM? ¿Teniendo en cuenta las optimizaciones de Caché, Precarga, Localidad de datos y Compilador?), Siéntase libre de considerar la oración como Un array es más similar a una memoria USB: cada punto es accesible en tiempo “constante” 🙂

Recuerda mostrar esta noticia si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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