Professional Documents
Culture Documents
Problema: Leer un arreglo de 7 elementos enteros. Leer luego un entero. Informar si ese entero
est o no. Si est, informar la posicin de todas sus ocurrencias.
para i de 1 7
leer a i
para i de 1 7
ai = k
V F
escribir Est en la posicin, i
esta verdadero
no esta
V F
escribir No est
program secue2(input,output);
var a: array[1..7] of integer; i, k: integer; esta: boolean;
begin for i:= 1 to 7 do read(a[i]); read(k); esta:= false;
for i:= 1 to 7 do if a[i]=k then
begin write(Est en la posicin,i);
esta:=true
end;
if not esta then write(No est)
end.
Bsqueda dicotmica: Consiste en tener dos indicadores, uno de la posicin de menor orden
(min) y otro de la posicin de mayor orden (max). Al principio uno valdr 1 y el otro N, suponiendo
que la cantidad de elementos sea N. (N=11 en los dos ejemplos que siguen).
Probamos si el elemento que est en el medio del arreglo es igual al buscado. Si es el buscado,
lo hemos encontrado y finaliza el algoritmo (suponemos que nos conformamos con una sola
ocurrencia). Si no es el buscado, nos fijamos si es mayor o menor al buscado, y como el arreglo
est clasificado, si el elemento del medio es menor, si el buscado est, est en la parte de
abajo, y nos quedamos con esa parte bajando min hasta medio, pero como ya sabamos que el
del medio no era, lo bajamos una posicin mas, es decir hacemos
min medio + 1
33
Algoritmos y Estructuras de Datos
Problema: Leer un arreglo de 11 elementos enteros, se sabe que est clasificado en forma
creciente. Leer luego un entero. Informar si ese entero est o no. Si est, informar su posicin.
Interesa ubicar una sola ocurrencia.
para i de 1 11
leer a i
leer k
a medio < k
V F
a medio = k
V F
program dicoto(input,output);
var min, max, k, i, medio: integer ; a: array[1..11] of integer;
begin for i:= 1 to 11 do read(a[i]); read(k);
min:=1; max:=11; medio:= (min+max) div 2;
while a[medio]<>k and min<=max do
begin if a[medio]<k then min:= medio+1
else max:= medio-1;
medio:= (min+max) div 2
end;
if a[medio]=k then write(Est en la posicin,medio)
else write(No est)
end.
35