Unidad 33. Arrays (III)





33.8. Carga de datos.

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

 

33.9. Visualización.

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.

33.10. Búsquedas.

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.

Octubre-2010
Pág. 33.3

Atrás  Inicio  Adelante






Página inicial  Cursos Informática Gratuitos

Síguenos en:   Facebook       Sobre aulaClic            Política de Cookies