Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla.
M.P. Sesmero, P. de Toledo, F.J. Ordoez, J. Gmez-Romero, J.A. Iglesias, J.L. Mira
TEMA 7.
ALGORITMOS DE BSQUEDA, ORDENACIN
Y MEZCLA
CONTENIDOS
7.1. BSQUEDA
7.2. ORDENACIN
7.3. MEZCLA
2
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla.
Bsqueda:
En listas sin ordenar
En listas ordenadas
Ordenacin:
Algoritmo de la burbuja
Algoritmo de insercin
Algoritmo de seleccin
Mezcla:
Mezclar dos listas ordenadas en una nica lista 3
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla.
M.P. Sesmero, P. de Toledo, F.J. Ordoez, J. Gmez-Romero, J.A. Iglesias, J.L. Mira
7.1. BSQUEDA
7.2. ORDENACIN
7.3. MEZCLA
7.1. BSQUEDA
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.1. Bsqueda
Algoritmos de bsqueda
Bsqueda
encontrar qu posicin ocupa un determinado valor en una lista
Dos opciones:
Bsqueda en listas sin ordenar
Bsqueda en listas ordenadas
Ms eficiente, aunque previamente hay que ordenar
Listas sin ordenar
Bsqueda secuencial simple o bsqueda lineal
Examinar cada elemento empezando por el primero hasta que se
encuentra el valor buscado o hasta que llega el final de la lista
Listas ordenadas
Bsqueda secuencial modificada
Bsqueda binaria 5
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.1. Bsqueda
// busqueda secuencial
i = 0 ;
encontrado = 0 ; // marcador: toma valor cierto(1) o falso(0)
while((i<N)&&(!encontrado)){
if (a[i]==dato)
encontrado = 1 ;
else
i++;
}
// escribimos los resultados
if (encontrado){ //a[i]==dato
printf ("%s", "el dato buscado esta en la posicin");
printf ("%d", i+1);
}
else {
Bsqueda binaria
Examinar el elemento central de la lista. Si no es el buscado determinar
si el elemento debera estar en la mitad superior o inferior de la lista
Repetir con la sublista apropiada hasta que se localiza el elemento o la
sublista est vaca.
7
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.1. Bsqueda
Bsqueda binaria
dato =37
5 11 14 22 28 37 43 56 59 70
37 43 56 59 70
37 43
7?
9
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.1. Bsqueda
Bsqueda binaria
dato =37
Iteracin 1: 5 11 14 22 28 37 43 56 59 70
Iteracin 2:
5 11 14 22
a[0] a[1] a[3] 2- El nuevo a[medio] (11), es mayor que el
izq=0 medio = dcha =3 valor buscado, por lo que se toma la sublista
(izq+dcha)/2 = 1 inferior
Bsqueda binaria
12
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.1. Bsqueda
Bsqueda binaria
//leemos el dato a buscar
scanf("%i",&dato);
Bsqueda binaria
if (encontrado)
{
printf ("Valor %d encontrado en ndice %d" ,dato, posicion);
}
else
{
printf (El dato %d no esta en el vector", dato);
}
14
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla.
M.P. Sesmero, P. de Toledo, F.J. Ordoez, J. Gmez-Romero, J.A. Iglesias, J.L. Mira
7.1. BSQUEDA
7.2. ORDENACIN
7.3. MEZCLA
7.2. ORDENACIN
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.2. Ordenacin
Algoritmos de ordenacin
Algoritmos de ordenacin bsicos (http://www.sorting-algorithms.com/)
Intercambio (Burbuja):
Consiste en comparar pares de elementos adyacentes e intercambiarlos
entre s hasta que estn todos ordenados
Seleccin directa:
Consiste en seleccionar el elemento ms pequeo del vector y ponerlo en
primera posicin; luego, entre los restantes, se busca el elemento ms
pequeo y se coloca en segundo lugar, y as sucesivamente hasta colocar el
ltimo elemento
Insercin directa:
Consiste es tener una sublista ordenada de elementos del vector e ir
insertando el resto en el lugar adecuado para que la sublista no pierda el
orden. La sublista ordenada se va haciendo cada vez mayor, de modo que
al final la lista entera queda ordenada. 16
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.2. Ordenacin
18
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.2. Ordenacin
2 7 8 5 4
19
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.2. Ordenacin
2 7 8 5 4
2 7 8 5 4
20
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.2. Ordenacin
2 7 8 5 4
2 7 8 5 4
2 7 5 8 4
21
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.2. Ordenacin
2 7 8 5 4
2 7 8 5 4
2 7 5 8 4
2 7 5 4 8
1 iteracin:
(i=0)
queda colocado el
mayor
4 comparaciones
N-(i+1) comparaciones 22
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.2. Ordenacin
2 7 8 5 4 2 7 5 4 8
2 7 8 5 4 2 5 7 4 8
2 7 5 8 4 2 5 4 7 8
2 7 5 4 8
2 iteracin:
(i=1)
1 iteracin: quedan colocados los
(i=0) dos mayores
queda colocado el
mayor 3 comparaciones
N-(i+1) comparaciones
4 comparaciones
N-(i+1) comparaciones 23
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.2. Ordenacin
2 7 8 5 4 2 7 5 4 8 2 5 4 7 8
2 7 8 5 4 2 5 7 4 8 2 4 5 7 8
2 7 5 8 4 2 5 4 7 8 3 iteracin:
(i=2)
2 7 5 4 8 quedan colocados los
2 iteracin: tres mayores
(i=1)
1 iteracin: quedan colocados los 2 comparaciones
(i=0) dos mayores N-(i+1) comparaciones
queda colocado el
mayor 3 comparaciones
N-(i+1) comparaciones
4 comparaciones
N-(i+1) comparaciones 24
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.2. Ordenacin
2 7 8 5 4 2 7 5 4 8 2 5 4 7 8 2 4 5 7 8
(fin)
2 7 8 5 4 2 5 7 4 8 2 4 5 7 8
4 iteracin:
(i=4)
2 7 5 8 4 2 5 4 7 8 3 iteracin: quedan colocados
(i=3) todos
2 7 5 4 8 quedan colocados los
2 iteracin:
tres mayores 1 comparacin
(i=2) (N-i) comparaciones
1 iteracin: quedan colocados los 2 comparaciones
(i=1) dos mayores al final (N-i) comparaciones
queda colocado el del array
mayor en la ltima
posicin del array 3 comparaciones
(N-i) comparaciones Necesito 4 iteraciones = N-1
4 comparaciones iteraciones 25
(N-i) comparaciones El nmero de comparaciones necesarias
empieza en (N-1) y disminuye en cada
iteracin
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.2. Ordenacin
28
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.2. Ordenacin
29
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.2. Ordenacin
Primera iteracin
7 2 8 5 4 Primer elemento de la lista desordenada
j desde 1 hasta N-1 ocupa la posicin i=0; jmin=1;
Segunda iteracin,
2 7 8 5 4 Primer elemento de la lista desordenada
ocupa la posicin i=1; jmin=4;
j desde 2 hasta N-1
Tercera iteracin,
2 4 8 5 7 Primer elemento de la lista desordenada
ocupa la posicin i=2; jmin=3;
j desde 3 hasta N-1
2 4 5 7 8 FIN
Necesito 4 iteraciones
j indica los elementos (N-1 iteraciones) 31
que voy comparando
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.2. Ordenacin
Ejemplo: http://www.youtube.com/watch?v=gTxFxgvZmQs 33
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.2. Ordenacin
2 4 5 7 8 FIN
34
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.2. Ordenacin
7>4
j =2 2 5 7 8 4 2 5 7 7 8
5>4
j =1 2 5 7 8 4 2 5 5 7 8
2<4
j =0 2 5 7 8 4 2 4 5 7 8 FIN
35
Colocamos el elemento en la posicin j
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.2. Ordenacin
8 8
7<8
j =1 2 7 8 2 7 8 FIN
36
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.2. Ordenacin
37
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.2. Ordenacin
40
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.2. Ordenacin
6 7 3 8 12 15 24 31 21 19
3 6 7 8 12 15 24 31 21 19
3 6 7 8 12 15 21 19 24 31
3 6 7 8 12 15 19 21 24 31
Animacin en wikipedia
http://en.wikipedia.org/wiki/Quicksort
Se reduce mucho el nmero de comparaciones y cambios
respecto a mtodo de la burbuja?
41
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.2. Ordenacin
42
M.P. Sesmero, P. de Toledo, F.J. Ordoez, J. Gmez-Romero, J.A. Iglesias, J.L. Mira
7.1. BSQUEDA
7.2. ORDENACIN
7.3. MEZCLA
7.3. MEZCLA
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.3. Mezcla
7.3. Mezcla
Mezclar = combinar secuencias ordenadas en una secuencia nica,
intercalando los elementos ya ordenados en cada secuencia de
modo que la secuencia final se mantenga ordenada
Es utilizado por algunos algoritmos de ordenacin que se basan en
subdividir la lista en partes ms pequeas que se ordenan y luego se
mezclan.
ordenacin por fusin (merge)
44
http://www.youtube.com/watch?v=EeQ8pwjQxTM
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.3. Mezcla
7.3. Mezcla
const int T1=100, T2=50; // tamaos de los vectores
int vector1[T1],vector2[T2],vector3[T1+T2];
//dos listas ordenadas(a y b)y una lista a la que copiarlas.
while((i1<T1)&&(i2<T2)){
if (vector1[i1]<vector2[i2]){
vector3[i]= vector1[i1];
i1 =i1+1;
}
else{
vector3[i]= vector2[i2];
i2=i2+1;
}
i=i+1;
} 45
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla. 7.3. Mezcla
7.3. Mezcla
...
//Terminamos de copiar la sublista mas larga
if (i1<T1)
// El vector1 no se ha copiado entero, copio lo que falta
for (k=i1; k<T1; k++){
vector3[i] = vector1[k];
i=i+1;
}
else
//El vector2 no se ha copiado entero, copio lo que falta
for (k=i2; k<T2; k++){
vector3[i] = vector2[k];
i=i+1;
}
46
Programacin
Tema 7. Algoritmos
Tema
de 1.
bsqueda,
Introduccin
ordenacin y mezcla.
M.P. Sesmero, P. de Toledo, F.J. Ordoez, J. Gmez-Romero, J.A. Iglesias, J.L. Mira
TEMA 7.
ALGORITMOS DE BSQUEDA, ORDENACIN
Y MEZCLA