o cómo evitar tener que buscar una aguja en un pajar

79
1 Diego Gutiérrez 23. Ordenación de vectores (tablas)

Upload: others

Post on 01-Aug-2022

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: O cómo evitar tener que buscar una aguja en un pajar

1Diego Gutiérrez

23. Ordenación de vectores (tablas)

Page 2: O cómo evitar tener que buscar una aguja en un pajar

3Diego Gutiérrez

Ordenación

O cómo evitar tener que buscar una aguja en un pajar

Page 3: O cómo evitar tener que buscar una aguja en un pajar

4Diego Gutiérrez

Ordenación

O cómo evitar tener que buscar una aguja en un pajar

¿Cómo buscamos una palabra en un diccionario? ¿O un número de teléfono en una guía?

Usando nuestro conocimiento de cómo están ordenados los datos

Page 4: O cómo evitar tener que buscar una aguja en un pajar

5Diego Gutiérrez

Ordenación

O cómo evitar tener que buscar una aguja en un pajar

¿Cómo buscamos una palabra en un diccionario? ¿O un número de teléfono en una guía?

Usando nuestro conocimiento de cómo están ordenados los datos

Sin un orden lógico en los datos, las búsquedas podrían ser terriblemente largas

Agilizar las operaciones de búsqueda es una razón que justifica la importancia de contar con estructuras de datos ordenadas.

Page 5: O cómo evitar tener que buscar una aguja en un pajar

6Diego Gutiérrez

Ordenación

Ordenar: organizar los datos según un criterio

La comparación (aplicación del criterio) de dos elementos cualesquiera del conjunto a ordenar debe resultar en un valor lógico que indique si los elementos cumplen el criterio de ordenación

Aunque todos sabemos ordenar un número pequeño de elementos (por orden alfabético, por numeración creciente o decreciente…) la tarea se haría casi imposible para grandes cantidades de elementos. Entran en juego los algoritmos y los ordenadores

Page 6: O cómo evitar tener que buscar una aguja en un pajar

7Diego Gutiérrez

Ordenación

La importancia de contar con tablas de datos ordenadas se justifica por la eficiencia de los algoritmos de búsqueda binaria que pueden ser aplicados (esp. si n>100 aprox.)

Algunos de los algoritmos de ordenación más utilizados son inserción, intercambio (burbuja), selección, mezcla o quicksortLa elección de un determinado algoritmo depende de factores como el tamaño de la tabla, el tipo de datos, la forma de acceso a la información o la cantidad de memoria disponible.

Page 7: O cómo evitar tener que buscar una aguja en un pajar

8Diego Gutiérrez

Ordenación

El problema:

Entrada: secuencia ⟨a1, a2, …, an⟩ de elementosSalida: permutación ⟨a'1, a'2, …, a'n⟩ tal que a'1≤a'2≤…≤a'n

Suponemos definida una función medida que, aplicada a los datos de la tabla proporciona como resultados valores pertenecientes a un tipo escalar y, por lo tanto, comparables

Ejemplo:Entrada: 8 2 4 9 3 6Ordenación exigida: medida(a'1) <= medida(a‘2) <= ...<= medida(a‘n)

Salida: 2 3 4 6 8 9

secuencia de datos ordenadosde acuerdo con un determinado criterio de ordenación.

Page 8: O cómo evitar tener que buscar una aguja en un pajar

9Diego Gutiérrez

Para ilustrar estas ideas, vamos a considerar una tabla T con unnúmero reducido de datos, por ejemplo ocho datos :

Page 9: O cómo evitar tener que buscar una aguja en un pajar

10Diego Gutiérrez

Para ilustrar estas ideas, vamos a considerar una tabla T con unnúmero reducido de datos, por ejemplo ocho datos :

Se muestran a continuación ahora los valores de la medida de cada uno de los datos. Por simplicidad, se ha considerado en este ejemplo que los valores de medida son datos de tipo entero.

Page 10: O cómo evitar tener que buscar una aguja en un pajar

11Diego Gutiérrez

La ordenación de la tabla T debe conducir a una reorganización de sus datos que satisfaga que sus medidas respectivas estén ordenadas de forma no decreciente (“≤”). Tras la ordenación, el valor de la tabla T es el siguiente :

Se puede comprobar que los valores de las medidas de cada uno de ellos respeta el criterio de ordenación no decreciente (“≤”).

Page 11: O cómo evitar tener que buscar una aguja en un pajar

12Diego Gutiérrez

Ordenación

Tres algoritmos:SelecciónInserciónIntercambio directo (o burbuja)

No usan tablas auxiliares para la ordenación

Desde el punto de vista didáctico son excelentes ejemplos de diseño de algoritmos sobre estructuras de datos indexadas

Otros algoritmos más eficientes (quicksort, mergesort…) no se presentan ya que su complejidad sobrepasa el ámbito de este curso

Page 12: O cómo evitar tener que buscar una aguja en un pajar

13Diego Gutiérrez

Método de selección:

Su eficiencia destaca cuando se aplica a tablas de dimensión reducida.

El método se basa en una idea muy sencilla y fácil de programar. Se trata de iterar a lo largo de la tabla, buscando en cada iteración el elemento menor (es decir, el dato cuya medida es la menor) entre los que quedan por ordenar para situarlo en la posición que le corresponde.

http://www.youtube.com/watch?v=boOwArDShLU&feature=related

Page 13: O cómo evitar tener que buscar una aguja en un pajar

14Diego Gutiérrez

Método de selección

En la iteración i-ésima se parte de que la subtabla T(1..i-1) ya está ordenada (con los i-1 valores menores de la tabla). Se busca entonces el elemento siguiente en la ordenación dentro de la subtabla T(1..n) y se permuta con el elemento de la posición T(i)

46 21 8 22 11

http://www.youtube.com/watch?v=boOwArDShLU

Page 14: O cómo evitar tener que buscar una aguja en un pajar

15Diego Gutiérrez

Método de selección

Encontrar el siguiente elemento a ordenar y ponerlo en el lugar adecuado intercambiándolo con el elemento en la posición a ser ocupada

46 21 8 22 11

Page 15: O cómo evitar tener que buscar una aguja en un pajar

16Diego Gutiérrez

Método de selección

Encontrar el siguiente elemento a ordenar y ponerlo en el lugar adecuado intercambiándolo con el elemento en la posición a ser ocupada

8 21 46 22 11

Page 16: O cómo evitar tener que buscar una aguja en un pajar

17Diego Gutiérrez

Método de selección

Encontrar el siguiente elemento a ordenar y ponerlo en el lugar adecuado intercambiándolo con el elemento en la posición a ser ocupada

8 21 46 22 11

Page 17: O cómo evitar tener que buscar una aguja en un pajar

18Diego Gutiérrez

Método de selección

Encontrar el siguiente elemento a ordenar y ponerlo en el lugar adecuado intercambiándolo con el elemento en la posición a ser ocupada

8 21 46 22 11

Page 18: O cómo evitar tener que buscar una aguja en un pajar

19Diego Gutiérrez

Método de selección

Encontrar el siguiente elemento a ordenar y ponerlo en el lugar adecuado intercambiándolo con el elemento en la posición a ser ocupada

8 11 46 22 21

Page 19: O cómo evitar tener que buscar una aguja en un pajar

20Diego Gutiérrez

Método de selección

Encontrar el siguiente elemento a ordenar y ponerlo en el lugar adecuado intercambiándolo con el elemento en la posición a ser ocupada

8 11 46 22 21

Page 20: O cómo evitar tener que buscar una aguja en un pajar

21Diego Gutiérrez

Método de selección

Encontrar el siguiente elemento a ordenar y ponerlo en el lugar adecuado intercambiándolo con el elemento en la posición a ser ocupada

8 11 46 22 21

Page 21: O cómo evitar tener que buscar una aguja en un pajar

22Diego Gutiérrez

Método de selección

Encontrar el siguiente elemento a ordenar y ponerlo en el lugar adecuado intercambiándolo con el elemento en la posición a ser ocupada

8 11 21 22 46

Page 22: O cómo evitar tener que buscar una aguja en un pajar

23Diego Gutiérrez

Método de selección

Encontrar el siguiente elemento a ordenar y ponerlo en el lugar adecuado intercambiándolo con el elemento en la posición a ser ocupada

8 11 21 22 46

Page 23: O cómo evitar tener que buscar una aguja en un pajar

24Diego Gutiérrez

Método de selección

Encontrar el siguiente elemento a ordenar y ponerlo en el lugar adecuado intercambiándolo con el elemento en la posición a ser ocupada

8 11 21 22 46

Page 24: O cómo evitar tener que buscar una aguja en un pajar

25Diego Gutiérrez

Método de selección

Encontrar el siguiente elemento a ordenar y ponerlo en el lugar adecuado intercambiándolo con el elemento en la posición a ser ocupada

8 11 21 22 46

Page 25: O cómo evitar tener que buscar una aguja en un pajar

26Diego Gutiérrez

Método de selección

Encontrar el siguiente elemento a ordenar y ponerlo en el lugar adecuado intercambiándolo con el elemento en la posición a ser ocupada

8 11 21 22 46

Page 26: O cómo evitar tener que buscar una aguja en un pajar

27Diego Gutiérrez

Método de selección

Encontrar el siguiente elemento a ordenar y ponerlo en el lugar adecuado intercambiándolo con el elemento en la posición a ser ocupada

8 11 21 22 46

(El último elemento evidentemente ya está en su sitio)

Page 27: O cómo evitar tener que buscar una aguja en un pajar

28Diego Gutiérrez

Método de selecciónalgoritmo Seleccion (referencia a: tpTabla; valor n: integer);{ Pre: a=a0Post: La tabla a almacena una permutación de a0 y sus datos están ordenados}variables

i, j, pos_min: integer; {i: lugar, j: elemento, pos_min: posición del mínimo}min: tpElemento;

principiopara i:=1 hasta n-1 hacer

pos_min:=i; min:=a[pos_min] para j=i+1 hasta n hacer

si condición entonces {nueva posición, nuevo mínimo}pos_min:=j; min:= a[pos_min] fsi

fparasi pos_min <> i entonces {si i no era el menor, se intercambia}

a[pos_min]:=a[i];a[i] = min; fsi

fparafin

a[j] < a[pos_min]

Page 28: O cómo evitar tener que buscar una aguja en un pajar

29Diego Gutiérrez

Método de selecciónalgoritmo Seleccion (referencia a: tpTabla; valor n: integer);{ Pre: a=a0Post: La tabla a almacena una permutación de a0 y sus datos están ordenados}variables

i, j, pos_min: integer; {i: lugar, j: elemento, pos_min: posición del mínimo}min: tpElemento;

principiopara i:=1 hasta n-1 hacer

pos_min:=i; min:=a[pos_min] para j=i+1 hasta n hacer

si condición entonces {nueva posición, nuevo mínimo}pos_min:=j; min:= a[pos_min] fsi

fparasi pos_min <> i entonces {si i no era el menor, se intercambia}

a[pos_min]:=a[i];a[i] = min; fsi

fparafin

Podemos no evaluar esta condición… (coste)

Page 29: O cómo evitar tener que buscar una aguja en un pajar

30Diego Gutiérrez

Método de selección

Simple y fácil de implementar…No muy eficiente para grandes tablas

Page 30: O cómo evitar tener que buscar una aguja en un pajar

31Diego Gutiérrez

Método de inserción directa

Inserción directa

El método es algo menos eficiente que el de ordenación por selección, salvo si la tabla a ordenar presenta una secuencia cuyos datos están próximos a la deseada tras la ordenación

Se itera n-2 veces. En la iteración i se parte de la precondición de que la subtabla T(1..i-1) está ordenada según valores no decrecientes (<=) de la medida de sus datos. La acción a iterar consiste en la inserción del dato T(i) en la posición que le corresponda de la subtabla T(1..i).

En cada iteración crece en una unidad el número de datos ya ordenados.

Page 31: O cómo evitar tener que buscar una aguja en un pajar

32Diego Gutiérrez

Método de inserción directa

Inserción directa:

El método es similar a ordenar por orden creciente una serie de cartas en la mesa: se examina la que se tiene en la mano, se analizan las ya ordenadas hasta encontrar el lugar correspondiente, se hace hueco y se inserta la carta.

http://www.youtube.com/watch?v=gTxFxgvZmQs

Para tener i cartas ordenadas, se parte de i-1 cartas ordenadas e inserta la nueva carta en el lugar correspondiente

O sea, se insertan elementos en una parte que ya está ordenada

Page 32: O cómo evitar tener que buscar una aguja en un pajar

33Diego Gutiérrez

Método de inserción directa

Inserción directa: Esquema básico

Se recorre la tabla con un bucle (índice i) desde el segundo elemento hasta el final, de forma que se van dejando ordenadas todas las posiciones inferiores. “Se hace hueco”: El elemento que se quiere insertar se guarda en una variable auxiliar y se va recorriendo la parte ordenada desde el final hasta el principio y desplazando los elementos para dejar el hueco donde insertar.El elemento en cuestión (el de índice i) se inserta en el lugar que le corresponde dentro de la parte ordenada.

para i:=2 hasta n hacerinsertar ai en el lugar adecuado en la secuencia a1….ai-1

fpara

Page 33: O cómo evitar tener que buscar una aguja en un pajar

34Diego Gutiérrez

Método de inserción directa

Elemento a buscarElementos

ordenados

ij

Page 34: O cómo evitar tener que buscar una aguja en un pajar

35Diego Gutiérrez

Método de inserción directa

Inserción directa

Page 35: O cómo evitar tener que buscar una aguja en un pajar

36Diego Gutiérrez

Método de inserción directa

Inserción directa

Page 36: O cómo evitar tener que buscar una aguja en un pajar

37Diego Gutiérrez

Método de inserción directa

Inserción directa

Page 37: O cómo evitar tener que buscar una aguja en un pajar

38Diego Gutiérrez

Método de inserción directa

Inserción directa

Page 38: O cómo evitar tener que buscar una aguja en un pajar

39Diego Gutiérrez

Método de inserción directa

Inserción directa

Page 39: O cómo evitar tener que buscar una aguja en un pajar

40Diego Gutiérrez

Método de inserción directa

Inserción directa

Page 40: O cómo evitar tener que buscar una aguja en un pajar

41Diego Gutiérrez

Método de inserción directa

Inserción directa

Page 41: O cómo evitar tener que buscar una aguja en un pajar

42Diego Gutiérrez

Método de inserción directa

Inserción directa

Page 42: O cómo evitar tener que buscar una aguja en un pajar

43Diego Gutiérrez

Método de inserción directa

Inserción directa

Page 43: O cómo evitar tener que buscar una aguja en un pajar

44Diego Gutiérrez

Método de inserción directa

Inserción directa

Page 44: O cómo evitar tener que buscar una aguja en un pajar

45Diego Gutiérrez

Método de inserción directa

Inserción directa

fin

Ver también http://www.wanginator.de/studium/applets/insertionsort_de.html

Page 45: O cómo evitar tener que buscar una aguja en un pajar

46Diego Gutiérrez

Método de inserción directa

Algoritmo detallado

algoritmo Insercion_Directa (referencia a: tpTabla; valor n: integer);{Pre: a = a0; Post: a es una permutación de a0 cuyos elementos están ordenados}variables

i, j: integer;{i: elemento a insertar, j: punto de inserción}aux: tpDato;

principiopara i:=2 hasta n hacer

aux:=a[i]; j:=i-1;mientras j>0 y a[j]>a[0] hacer {buscar punto inserción}

a[j+1] := a[j]; j := j-1

fmq;a[j+1] := aux; {insertar a[i] en su posición correcta}

fparafin

Page 46: O cómo evitar tener que buscar una aguja en un pajar

47Diego Gutiérrez

Método de inserción directa

Elemento a buscarElementos

ordenados

ij

Más rápido, también fácil de implementar

Page 47: O cómo evitar tener que buscar una aguja en un pajar

48Diego Gutiérrez

Método de la burbuja (o intercambio)

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

26 14 26 15 1 3

http://www.youtube.com/watch?v=1JvYAXT_064&mode=related&search

Page 48: O cómo evitar tener que buscar una aguja en un pajar

49Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

26 14 26 15 1 3

Page 49: O cómo evitar tener que buscar una aguja en un pajar

50Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

14 26 26 15 1 3

Page 50: O cómo evitar tener que buscar una aguja en un pajar

51Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

14 26 26 15 1 3

Page 51: O cómo evitar tener que buscar una aguja en un pajar

52Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

14 26 26 15 1 3

Page 52: O cómo evitar tener que buscar una aguja en un pajar

53Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

14 26 15 26 1 3

Page 53: O cómo evitar tener que buscar una aguja en un pajar

54Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

14 26 15 26 1 3

Page 54: O cómo evitar tener que buscar una aguja en un pajar

55Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

14 26 15 1 26 3

Page 55: O cómo evitar tener que buscar una aguja en un pajar

56Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

14 26 15 1 26 3

Page 56: O cómo evitar tener que buscar una aguja en un pajar

57Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

14 26 15 1 3 26

Page 57: O cómo evitar tener que buscar una aguja en un pajar

58Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

14 26 15 1 3 26

Page 58: O cómo evitar tener que buscar una aguja en un pajar

59Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

14 26 15 1 3 26

Page 59: O cómo evitar tener que buscar una aguja en un pajar

60Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

14 15 26 1 3 26

Page 60: O cómo evitar tener que buscar una aguja en un pajar

61Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

14 15 26 1 3 26

Page 61: O cómo evitar tener que buscar una aguja en un pajar

62Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

14 15 1 26 3 26

Page 62: O cómo evitar tener que buscar una aguja en un pajar

63Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

14 15 1 26 3 26

Si en la última iteración realizada los últimos elementos intercambiados son los de las posiciones j y j+1, la siguiente sólo necesitará comparar hasta el j-1, j (a partir de ahí ya estáordenada)

Page 63: O cómo evitar tener que buscar una aguja en un pajar

64Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

14 15 1 3 26 26

Page 64: O cómo evitar tener que buscar una aguja en un pajar

65Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

14 15 1 3 26 26

Page 65: O cómo evitar tener que buscar una aguja en un pajar

66Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

14 15 1 3 26 26

Page 66: O cómo evitar tener que buscar una aguja en un pajar

67Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

14 1 15 3 26 26

Page 67: O cómo evitar tener que buscar una aguja en un pajar

68Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

14 1 15 3 26 26

Page 68: O cómo evitar tener que buscar una aguja en un pajar

69Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

14 1 3 15 26 26

Page 69: O cómo evitar tener que buscar una aguja en un pajar

70Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

14 1 3 15 26 26

Page 70: O cómo evitar tener que buscar una aguja en un pajar

71Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

1 14 3 15 26 26

Page 71: O cómo evitar tener que buscar una aguja en un pajar

72Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

1 14 3 15 26 26

Page 72: O cómo evitar tener que buscar una aguja en un pajar

73Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

1 3 14 15 26 26

Page 73: O cómo evitar tener que buscar una aguja en un pajar

74Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

1 3 14 15 26 26

Page 74: O cómo evitar tener que buscar una aguja en un pajar

75Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

1 3 14 15 26 26

Page 75: O cómo evitar tener que buscar una aguja en un pajar

76Diego Gutiérrez

Método de la burbuja

Se recorre la tabla comparando la medida de dos elementos consecutivos, intercambiándolos si es necesario. El proceso se repite hasta que no se haga ningún intercambio (tabla ordenada)A diferencia de los algoritmos de selección e inserción directa, los elementos sólo se mueven una posición cada vez

1 3 14 15 26 26

Page 76: O cómo evitar tener que buscar una aguja en un pajar

77Diego Gutiérrez

Método de la burbuja

Ineficiente

Page 77: O cómo evitar tener que buscar una aguja en un pajar

78Diego Gutiérrez

Método de la burbuja

Algoritmo:

algoritmo Burbuja (referencia a: tpTabla; valor n: integer);variables

j: integer; {índice}aux: tpDato;ult_comp, ult_int: integer; {índices de la última pareja a comparar e intercambiada}

principioult_comp = (n-1) {comparo todos hasta el penúltimo} mientras que ult_comp>=1 hacer

ult_int = 1; {terminará si no hay más intercambios} para j=1 hasta ult_comp hacer

si condición_intercambio entonces aux:=a[j]; a[j]:=a[j+1]; a[j+1]:=aux;ult_int:=j; fsi fpara

ult_comp:=ult_int-1; fmqFin

a[j] > a[j+1]

Page 78: O cómo evitar tener que buscar una aguja en un pajar

79Diego Gutiérrez

Método de la burbuja

Algoritmo:

algoritmo Burbuja (referencia a: tpTabla; valor n: integer);variables

j: integer; {índice}aux: tpDato;ult_comp, ult_int: integer; {índices de la última pareja a comparar e intercambiada}

principioult_comp = (n-1) {comparo todos hasta el penúltimo} mientras que ult_comp>=0 hacer

ult_int = 1; {terminará si no hay más intercambios} para j=1 hasta ult_comp hacer

si condición_intercambio entonces aux:=a[j]; a[j]:=a[j+1]; a[j+1]:=aux;ult_int:=j; fsi fpara

ult_comp:=ult_int-1; fmqFin

Page 79: O cómo evitar tener que buscar una aguja en un pajar

80Diego Gutiérrez

Conclusiones: