Anda di halaman 1dari 28

ARREGLOS

UNIDIMENSIONALES
Prof. Robert Espinoza Domnguez
consultorsistemas@msn.com

Arreglo unidimensional o vector

Es un conjunto finito y ordenado de elementos


homogneos.
Por finito entendemos que existe un nmero especfico
de elementos en el arreglo. Dicho nmero puede ser
grande o pequeo pero es preciso que exista.
Por ordenado se entiende que debe existir un elemento
0, un elemento 1, y as sucesivamente.
Por homogneo queremos decir que todos los
elementos son del mismo tipo. Por ejemplo un arreglo
puede contener enteros o caracteres pero no ambos.

Arreglo unidimensional o vector

35

65

34

57

31

24

ndice

A(2) = 34

Acciones primitivas
Leer un valor del arreglo
Leer A(ndice)
Escribir un valor en un arreglo
Escribir A(indice)
Asignar un valor a una posicin del arreglo
A(ndice) valor

Algoritmos bsicos

Carga de un arreglo
Accin Cargar ( A, n)
Para i 0 hasta n-1 hacer
Leer A(i)
Fin_para
Fin_Accin

Recorrido de un arreglo
Accin Recorrer ( A, n)
Para i 0 hasta n-1 hacer
Escribir A(i)
Fin_para
Fin_Accin

Acceso por posicin


Accin Acceso_posicin ( A, n, pos)
Si pos < n entonces
valor A(pos)
Sino
Escribir Posicin no existe
Fin_si
Fin_Accin

Acceso por valor


Accin Acceso_valor ( A, n, valor)
i0
sw 0
Mientras (i< n y sw = 0) hacer
Si (valor = A (i) ) entonces
sw 1
Fin_si
ii+1
Fin_Mientras

Acceso por valor


Si (sw=1) entonces
Escribir A(i-1), i-1
sino
Escribir Valor no encontrado
Fin si
Fin_Accin

Bsqueda secuencial

La manera ms sencilla y natural para encontrar un


valor, dentro de un arreglo es comparar el valor con
cada elemento hasta encontrarlo o bien, hasta agotar el
conjunto.
Este algoritmo requiere una sola comparacin si el
argumento est en el primer lugar del vector, y N
comparaciones en el peor de los casos, es decir si es el
ltimo elemento del vector, o bien si no pertenece al
conjunto. Por consiguiente, en promedio:
Cantidad total de comparaciones es (N + 1)/ 2

Bsqueda secuencial
Accin Busqueda_Secuencial (A, n, valor)
i0
encontrado 0
Mientras (i< n y encontrado = 0) hacer
Si (valor = A (i) ) entonces
encontrado 1
Else
ii+1
Fin_si
Fin_Mientras

Bsqueda secuencial
Si (encontrado = 1) entonces
Escribir Valor encontrado en la posicin:, i
sino
Escribir Valor no encontrado
Fin si
Fin_Accin

Bsqueda secuencial en un arreglo ordenado

Si el arreglo est ordenado ascendentemente se


detendr la bsqueda cuando el valor sea menor que el
elemento comparado, en caso no se encuentre.
Por ejemplo si el valor buscado es 25, la bsqueda se
detendr cuando 25 se compare con 35 por ser menor.
3, 14, 18, 23, 35 , 40, 48, 56

Bsqueda secuencial en un arreglo ordenado


Accin Busqueda_Secuencial_Ordenado (A, n, valor)
i0
encontrado 0
Mientras (i< n y encontrado = 0 y valor >= A(i) hacer
Si (valor = A (i) ) entonces
encontrado 1
Else
ii+1
Fin_si
Fin_Mientras

Bsqueda secuencial en un arreglo ordenado

Si (encontrado = 1) entonces
Escribir Valor encontrado en la posicin:, i
sino
Escribir Valor no encontrado
Fin si
Fin_Accin

Bsqueda binaria

Se aplica cuando un arreglo est ordenado.


Supongamos que los elementos han sido ordenados por
cualquier mtodo en forma ascendente.
El Mtodo binario consiste en localizar,
aproximadamente, la posicin media del arreglo y
examinar el valor all encontrado.
Si este valor es mayor que el argumento buscado,
entonces se sigue buscando el dato en la primera mitad
del arreglo, repitindose el proceso en la mitad
correspondiente del mismo, hasta hallar el valor
deseado.

Bsqueda binaria

Si por el contrario, el elemento de la mitad es menor


que el buscado, entonces se contina la bsqueda en la
mitad derecha del arreglo.
Este proceso de divisin por mitades se repite hasta
encontrar el valor buscado en alguna mitad, o bien
hasta que el intervalo de bsqueda haya quedado vaco.

Bsqueda binaria
Dado un vector V y un dato K, despus de comparar el
argumento K con el elemento mitad V(I), existen 3
posibilidades:
1.Que K < V(I), entonces se eliminan
V(I + 1), V(I + 2), ..., V(N-1) de la bsqueda.
2.Que K = V(I), entonces termina la bsqueda.
3.Que K > V(I), entonces se eliminan
V(0), V(1), ..., V(I) de la bsqueda.

Bsqueda binaria
Sea el siguiente conjunto de 8 elementos:
2, 8, 14, 17, 21, 26, 35, 42
y el valor a buscar es k = 35
El elemento central del arreglo es 17 (pos = 8/2). Como
35 > 17, se desechan los valores 2, 8, 14, y 17.
El proceso sigue, usando la mitad derecha del arreglo:
desde V[5] a V[8]. El elemento mitad de este nuevo subvector es 26. Como 35 > 26, descartamos los elementos
21 y 26.
Sigue la bsqueda con V[7] y V[8]. La mitad de este
intervalo es 35. Como es el valor buscado, el proceso
termina con xito.

Accin Busqueda_Binaria ( A, n, valor)


vi 0
vf n-1
pos -1
Mientras (vi <= vf ) y (pos = -1) hacer
mitad entero ( (vi + vf)/2 )
Si (valor = A (mitad) ) entonces
pos mitad
Sino
Si ( valor < A (mitad) ) entonces
vf mitad 1
Sino
vi mitad + 1
Fin Si
Fin_si
Fin Mientras

Si (pos <> -1) Entonces


Escribir el valor est en, pos
Sino
Escribir el valor no existe
Fin Si
Fin Accin

Insercin de un elemento en una posicin


Accin Insercion_posicion ( A, n, pos, valor)
in
Mientras (i > pos ) hacer
A (i) A (i-1)
i i -1
Fin Mientras
A (pos) valor
Fin Accin

Insercin de un elemento despus de un


valor
Accin Insercin_valor (A, n, valor)
i0
sw 0
Mientras (i< n y sw = 0) hacer
Si (valor = A (i) ) entonces
sw 1
Else
ii+1
Fin_si
Fin_Mientras

Insercin de un elemento despus de un


valor
Si (sw=1) entonces
Insercion_posicion ( A, n, i+1, valor)
sino
Escribir Valor no encontrado
Fin si
Fin_Accin

Eliminacin de un elemento por posicin


Accin Eliminar_posicion ( A, n, pos)
i pos
Mientras (i <= n - 2 ) hacer
A (i) A (i+1)
i i +1
Fin Mientras
n n-1
Fin Accin

Eliminacin de un elemento por valor


Accin Eliminar_valor (A, n, valor)
i0
sw 0
Mientras (i< n y sw = 0) hacer
Si (valor = A (i) ) entonces
pos i
sw 1
Fin Si
ii+1
Fin_Mientras

Eliminacin de un elemento por valor


Si (sw=1) entonces
Eliminar_posicion ( A, n, pos)
sino
Escribir Valor no encontrado
Fin si
Fin_Accin

Anda mungkin juga menyukai