Académique Documents
Professionnel Documents
Culture Documents
Introduccin
Bsqueda
Actualizacin de vectores ordenados y no
ordenados
1. Insercin
2. Modificacin
3. Borrado
4. Mtodos de Ordenacin
1
1.
2.
C d ti
Cuadrticos
Logartmicos
Bibliografa:
Clavel y Biondi.
Weiss.
Wirth.
1. Introduccin: Recordatorio
Conjunto
C j t
d
de
elementos
l
t
del
d l mismo
i
ti
tipo
conceptualmente
t l
t
relacionados..
relacionados
Los elementos estn indexados
indexados:: Se accede a ellos a travs de un
ndice..
ndice
Definiciones
V: Vector [1..
..M,
M, 1..
..N]
N] de numrico;
numrico;
..P,
P 1..
P,
..Q]
Q] de carcter;
carcter;
M: Vector [1..
Operaciones elementales:
Acceso/Asignacin
V(1)
Y := V(i) + V(iV(i-1);
1)
V(1) := 1;
Lectura
Leer V(i);
()
Leer_f (f, V(i));
Escritura
Escribir V(i+
V(i+1
1), x, Cadena
Cadena;;
Escribir_f (f, V(j));
V(j));
Operaciones no elementales:
Bsqueda
Actualizacin (Insercin, Modificacin y Borrado)
Ordenacin
2. Bsqueda
ordenados:
ordenados:
Algoritmo
g
Bsqueda_secuencial_1
Bsqueda_secuencial_
q
_
_1 (V,, N,, X,, Posicin,, Existe)) es
V: Vector [1..
..M]
M] de T; {p
{p.. dato}
N: numrico
numrico;; {p
{p.. dato;
dato; posiciones ocupadas}
{p.. dato}
}
X: T; {p
Posicin:: numrico
Posicin
numrico;; {p
{p.. resultado}
Existe:: lgico
Existe
lgico;; {p
{p.. resultado}
Inicio
Posicin := 1;
Existe := falso
falso;;
mientras Posicin <
<= N y Existe = falso hacer
si V(Posicin) = X entonces
existe := Cierto
Cierto;;
sino
Posicin := Posicin + 1;
fin si
fin mientras
mientras;;
Fin
bsqueda
ordenados
ordenados:: bsqueda secuencial
Al
Algoritmo
it
B
Bsqueda_secuencial_2
Bsqueda_secuencial_
d
i l 2 (V,
V N,
N X,
X Posicin,
P i i Existe)
E i t ) es
V: Vector [1..
..M]
M] de T; {p
{p.. dato}
N: numrico
numrico;; {p
{p.. dato}
X: T; {p
{p.. dato}
Posicin:: numrico
Posicin
numrico;; {p
{p.. resultado}
Existe:: lgico
Existe
lgico;; {p
{p.. resultado}
Inicio
posicin := 1;
mientras (posicin < N) y (X < V(posicin)) hacer
Posicin := Posicin + 1;
fin si
fin mientras;
mientras;
si V(Posicin
V(Posicin)) = X entonces
existe := cierto
cierto;;
sino
existe := falso
falso;;
fin si;
si;
Fin
3. Actualizacin
Suponemos un vector de M posiciones
Estn ocupadas N de ellas (0 <= N <= M)
No podemos ocupar ms de M
No podemos ocupar menos de 0
El algoritmo
algo itmo error()
e o () nos permite
pe mite terminar
te mina el programa,
p og ama aunque
a nq e no sea
necesario hacerlo
Tras cada operacin de actualizacin (insercin, modificacin o
y que
q
asegurar
g
que
q
estas premisas
p
se sigan
g
cumpliendo.
p
borrado)) hay
3.1.1. Insercin en vectores desordenados
Algoritmo Insertar_1 (V, N, X) es
V: Vector [1..M] de T; {p. datodato-resultado}
N: Numrico; {p. datodato-resultado}
X: T; {p. dato}
Inicio
Si N < M entonces
N := N +1;
V(N) := X;
Sino
Error (No hay espacio disponible);
Finsi
Fin
V(pos) := V(N)
V(N);;
N:=N=N-1; }
Sino
N := N 1;
Para I de Pos a N hacer
V(I) := V(I+
V(I+1
1);
Fin para
Error (El elemento no existe);
existe);
Fin si
Sino
Error (Vector vaco)
vaco);;
Fin si
Fin
ES NECESARIO REORDENAR?
En este momento sabemos que se cumple:
V(Pos) := Y;
V(i) V(i+1): 1 i < pospos-1
V(i) V(i+1): pos +1 i < N
Qu casos se pueden dar?
a) V(pos
V(pos--1) V(pos) V(pos+1) N = 1
b) V(pos) < V(posV(pos-1) y N > 1
c)) V(pos)
V(
) > V(pos+1)
V(
1) y N > 1
Qu hay que hacer?
a) Nada.
Nada El vector sigue ordenado
ordenado.
b) y c) Es necesario reordenar la mitad afectada.
Se puede preguntar directamente
V(pos) < V(posV(pos-1) V(pos) > V(pos+1)?
Si N> 1 y pos = 1 slo se puede preguntar V(pos) > V(pos+1)?
Si N> 1 y pos = N slo se puede preguntar V(pos) < V(posV(pos-1)?
Si N>1 y pos 1 y pos N entonces deben preguntarse ambos casos.
casos