Una vez que disponemos de una estructura de datos en memoria, el siguiente paso es realizar la carga de los mismos en dicha estructura de datos.
Definición
Crear V(10) como Entero
La carga de los mismos se realizará habitualmente mediante una estructura de tipo repetitivo, lo cual no quita evidentemente que en alguna ocasión haya que hacerlo de alguna forma más rústica, V(0) = 5.
Carga
X=0
Hacer
X=X+1
Leer "Introduce un número ", V(X)
Hasta que X=10
La estructura del bucle dependerá de cómo en cada lenguaje se definan los elementos en el mismo.
La estructura de antes es válida, pero la que sigue también.
Carga
X=0
Hacer
Leer "Introduce un número ", V(X)
X=X+1
Hasta que X=10
Con la visualización sucede lo mismo.
Visualización
X=0
Hacer
X=X+1
Visualizar V(X)
Hasta que X=10
Podemos implementar este bucle o cambiarlo con la versión anterior.
Otra de las acciones habituales con un array es la de realizar la búsqueda de un dato dentro de esa estructura.
En la búsqueda se pueden plantear dos situaciones distintas.
Array ordenado.
Array sin ordenar.
Cuando la búsqueda se realiza en un array que está sin ordenar no queda más remedio que realizar una búsqueda desde el primer hasta el último elemento del vector.
Cuando está ordenado se pueden establecer distintos sistemas de búsquedas, unos más o menos eficientes.
Esta puede ser una estructura de búsqueda cuando el array no está ordenado.
Búsqueda sin ordenar
X=0
Hacer
X=X+1
Encontrado = V(X) = DatoBuscado
Hasta que X=10 Or Encontrado
Esta variable tomará el valor cierto cuando se de la situación de que V(X) sea igual a DatoBuscado.
Encontrado = V(X) = DatoBuscado
Cuando el array, vector, esté ordenado puede realizarse así.
Búsqueda vector ordenado
X=0
Hacer
X=X+1
Encontrado = V(X) = DatoBuscado
Hasta que X=10 Or Encontrado OR V(X) > DatoBuscado
De esta forma, cuando V(X) sea mayor que el elemento buscado, se finalizará la búsqueda.
Aquí si que es importante la estructura del bucle.
Si en lugar de
X=0
Hacer
X=X+1
Encontrado = V(X) = DatoBuscado
Hasta que X=10 Or Encontrado OR V(X) > DatoBuscado
Se monta
X=0
Hacer
Encontrado = V(X) = DatoBuscado
X=X+1
Hasta que X=10 Or Encontrado OR V(X) > DatoBuscado
Hay que tener en cuenta que V(X) no habrá sido todavía analizado en
Encontrado = V(X) = DatoBuscado
Pero existen otros sistemas de búsqueda más eficientes.
Uno de ellos es la búsqueda dicotómica o binaria.
El sistema de búsqueda se basa en hallar sucesivos centros en los índices del vector, hasta que se de la situación de que se encuentra o bien los límites izquierdo y derecho se cruzan.
Entero Izquierda, Derecha, x
Boolean Encontrado = Falso
// Límites izquierdo y derecho iniciales
Izquierda = 0 // Base cero.
Derecha = LongitudVector – 1
// Punto medio entre los dos límites
x = Entero((Izquierda / Derecha) / 2)
Mientras ((Encontrado = Falso) And (Izquierda < Derecha))
Encontrado = (v[x] = x) // Lo hemos encontrado si son iguales
Si no Encontrado
Si v[x] > x Entonces Derecha = X // Está a la izquierda del centro
Si v[x] < x Entonces Izquierda = X // Está a la derecha del centro
X = (Izquierda/Derecha) / 2 // Calculamos el nuevo punto medio
Fin de Si
Fin de mientras
En este ejemplo tendremos en X la posición del elemento existente cuando Encontrado sea cierto.
Síguenos en: Facebook Sobre aulaClic Política de Cookies