Você está na página 1de 53

Prof.

Robert Espinoza

Mtodos de Ordenamiento

Ordenamiento

Ordenar significa reagrupar o reorganizar un conjunto


de datos u objetos en una secuencia especfica.
Formalmente se define de la siguiente manera:

Sea A una lista de elementos


A1, A2, A3, , An

Ordenar es clasificar estos elementos para que queden


segn una distribucin establecida.
Ascendente:
A1 A2 A3 An

Descendente:
A1 A2 A3 An

Ordenacin por intercambio (Burbuja)

Para un ordenamiento ascendente, podemos


trabajar de dos formas diferentes:

En el caso de una clasificacin descendente se


opera de manera contraria.

Llevar los elementos menores hacia la parte


izquierda del arreglo, o
Desplazar los elementos mayores hacia la derecha.

Llevar los elementos mayores hacia la parte


izquierda del arreglo, o
Desplazar los elementos menores hacia la derecha.

Es quizs el mtodo ms ineficiente.

Ordenacin por intercambio (Burbuja)


Consiste bsicamente en lo siguiente:
Comparar pares de elementos adyacentes e
intercambiarlos entre s hasta que todos se
encuentren ordenados.
Se realizan (n-1) pasadas transportando en cada
una de ellas el mayor o menor elemento, segn
sea el caso a su posicin ideal.
Al final de las (n-1) pasadas los elementos estarn
ordenados

Ordenacin por intercambio (Burbuja)


Ordenacin ascendente llevando el menor a la
izquierda.
Comparamos los elementos adyacentes
comenzando con el penltimo y ltimo elementos.
Intercambiamos si un elemento es mayor que el
siguiente, es decir vamos desplazando el menor a
la izquierda.
Retrocedemos hasta llegar al primer elemento en
la primera pasada, al segundo en la segunda
pasada y as sucesivamente.
Finalmente el arreglo quedar ordenado.

Ordenacin por intercambio (Burbuja)

Ejemplo: Ordenar ascendentemente llevando el menor


a la izquierda

15 67

16 44 27 12 35

Ordenacin por intercambio (Burbuja)


Primera pasada
15 67

16 44 27 12 35

A[6] > A[7] No intercambio

15 67

16 44 27 12 35

A[5] > A[6] Intercambio

15 67

16 44 12 27 35

A[4] > A[5] Intercambio

15 67

16 12 44 27 35

A[3] > A[4] Intercambio

15 67

12 16 44 27 35

A[2] > A[3] No intercambio

15 67

12 16 44 27 35

A[1] > A[2] Intercambio

15

67 12 16 44 27 35

A[0] > A[1] Intercambio

15 67 12 16 44 27 35

Ordenacin por intercambio (Burbuja)


Segunda pasada
8

15 67 12 16 44 27 35

A[6] > A[7] No intercambio

15 67 12 16 44 27 35

A[5] > A[6] Intercambio

15 67 12 16 27 44 35

A[4] > A[5] No intercambio

15 67 12 16 27 44 35

A[3] > A[4] No intercambio

15 67 12 16 27 44 35

A[2] > A[3] Intercambio

15 12 67 16 27 44 35

A[1] > A[2] Intercambio

12 15 67 16 27 44 35

Ordenacin por intercambio (Burbuja)


Tercera pasada
8

12 15 67 16 27 44 35

A[6] > A[7] Intercambio

12 15 67 16 27 35 44

A[5] > A[6] No intercambio

12 15 67 16 27 35 44

A[4] > A[5] No intercambio

12 15 67 16 27 35 44

A[3] > A[4] Intercambio

12 15 16 67 27 35 44

A[2] > A[3] No intercambio

12 15 16 67 27 35 44

Ordenacin por intercambio (Burbuja)


Cuarta pasada
8

12 15 16 67 27 35 44

A[6] > A[7] No intercambio

12 15 16 67 27 35 44

A[5] > A[6] No intercambio

12 15 16 67 27 35 44

A[4] > A[5] Intercambio

12 15 16 27 67 35 44

A[3] > A[4] No intercambio

12 15 16 27 67 35 44

Ordenacin por intercambio (Burbuja)


Quinta pasada
8

12 15 16 27 67 35 44

A[6] > A[7] No intercambio

12 15 16 27 67 35 44

A[5] > A[6] Intercambio

12 15 16 27 35 67 44

A[4] > A[5] No intercambio

12 15 16 27 35 67 44

Ordenacin por intercambio (Burbuja)


Sexta pasada
8

12 15 16 27 35 67 44

A[6] > A[7] Intercambio

12 15 16 27 35 44 67

A[5] > A[6] No intercambio

12 15 16 27 35 44 67

Ordenacin por intercambio (Burbuja)

Stima pasada
8

12 15 16 27 35 44 67

A[6] > A[7] No intercambio

12 15 16 27 35 44 67

Ordenacin por intercambio (Burbuja)

Algoritmo de ordenacin pasando el menor hacia la izquierda

Mtodo Burbuja_menor(A,N)
Para I desde 1 hasta N-1 hacer
Para J desde N-1 hasta I
Si A(J-1) > A(J) entonces
aux A[J-1]
A[J-1] A[J]
A[J] aux
FinSi
FinPara
FinPara
Fin Mtodo

Ordenacin por intercambio (Burbuja)

Ejemplo: Ordenar ascendentemente pasando el mayor


hacia la parte derecha

15 67

16 44 27 12 35

Ordenacin por intercambio (Burbuja)


Primera pasada
15 67

16 44 27 12 35

A[0] > A[1] No intercambio

15 67

16 44 27 12 35

A[1] > A[2] Intercambio

15

67 16 44 27 12 35

A[2] > A[3] Intercambio

15

16 67 44 27 12 35

A[3] > A[4] Intercambio

15

16 44 67 27 12 35

A[4] > A[5] Intercambio

15

16 44 27 67 12 35

A[5] > A[6] Intercambio

15

16 44 27 12 67 35

A[6] > A[7] Intercambio

15

16 44 27 12 35 67

Ordenacin por intercambio (Burbuja)


Segunda pasada
15

16 44 27 12 35 67

15 16 44 27 12 35 67

A[1] > A[2] No intercambio

15 16 44 27 12 35 67

A[2] > A[3] No intercambio

15 16 44 27 12 35 67

A[3] > A[4] Intercambio

15 16 27 44 12 35 67

A[4] > A[5] Intercambio

15 16 27 12 44 35 67

A[5] > A[6] Intercambio

A[0] > A[1] Intercambio

15 16 27 12 35 44 67

Ordenacin por intercambio (Burbuja)


Tercera pasada
8

15 16 27 12 35 44 67

A[0] > A[1] No intercambio

15 16 27 12 35 44 67

A[1] > A[2] No intercambio

15 16 27 12 35 44 67

A[2] > A[3] No intercambio

15 16 27 12 35 44 67

A[3] > A[4] Intercambio

15 16 12 27 35 44 67

A[4] > A[5] No intercambio

15 16 12 27 35 44 67

Ordenacin por intercambio (Burbuja)


Cuarta pasada
8

15 16 12 27 35 44 67

A[0] > A[1] No intercambio

15 16 12 27 35 44 67

A[1] > A[2] No intercambio

15 16 12 27 35 44 67

A[2] > A[3] Intercambio

15 12 16 27 35 44 67

A[3] > A[4] No intercambio

15 12 16 27 35 44 67

Ordenacin por intercambio (Burbuja)


Quinta pasada
8

15 12 16 27 35 44 67

A[0] > A[1] No intercambio

15 12 16 27 35 44 67

A[1] > A[2] Intercambio

12 15 16 27 35 44 67

A[2] > A[3] No intercambio

12 15 16 27 35 44 67

Ordenacin por intercambio (Burbuja)


Sexta pasada
8

12 15 16 27 35 44 67

A[0] > A[1] No intercambio

12 15 16 27 35 44 67

A[1] > A[2] No intercambio

12 15 16 27 35 44 67

Ordenacin por intercambio (Burbuja)

Stima pasada
8

12 15 16 27 35 44 67

A[0] > A[1] No intercambio

12 15 16 27 35 44 67

Ordenacin por intercambio (Burbuja)

Algoritmo de ordenacin pasando el menor hacia la izquierda

Mtodo Burbuja_mayor(A,N)
Para I desde N-2 hasta 0 hacer
Para J desde 0 hasta I
Si A(J) > A(J+1) entonces
aux A[J]
A[J] A[J+1]
A[J+1] aux
FinSi
FinPara
FinPara
Fin Mtodo

Anlisis de eficiencia del Mtodo por


intercambio (Burbuja)

Nmero de comparaciones:

Primera pasada: (n-1), segunda pasada: (n-2), tercera


pasada: (n-3) y as sucesivamente hasta llegar a 2 y 1.
Por lo tanto el nmero de comparaciones C es:

n * ( n 1)
C (n 1) (n 2) 2 1
2
n2 n
C
2

Anlisis de eficiencia del Mtodo por


intercambio (Burbuja)

El nmero de movimientos o intercambios dependen


de si el arreglo se encuentra:

En orden inverso (caso peor)


Mmx = 3 * (n2 n) / 2 = 1.5 * (n2 n)

Desordenado o aleatorio (caso medio)


Mmed = 0.75 * (n2 n)

Ordenado (caso mejor)


Mmn = 0

El tiempo necesario para ejecutar el algoritmo de la


burbuja es proporcional a n2
T(n) = O(n2)

Anlisis de eficiencia del Mtodo por


intercambio (Burbuja)

Por ejemplo si son 100 elementos a ordenar tenemos

Caso mejor (Ordenado)


4,950 comparaciones
0 movimientos
Caso medio (aleatorio)
4,950 comparaciones
7,425 movimientos
Caso peor (en orden inverso)
4,950 comparaciones
14,850 movimientos

Mtodo de intercambio con seal (flag)

Es una modificacin del mtodo de la burbuja con la


finalidad de terminar la ejecucin del algoritmo en caso
se compruebe que el arreglo ya est ordenado
despus de una pasada.
La idea central es utilizar una seal o marca para
indicar que no se ha producido ningn intercambio en
una pasada, lo que comprueba que el arreglo est
completamente ordenado.

Mtodo de intercambio con seal (flag)


Mtodo Burbuja_seal (A,N)
i 1, flag VERDADERO
Mientras i <= N-1 y flag = VERDADERO hacer
flag FALSO
Para j desde 0 hasta n-2 hacer
Si A[ j ] > A[ j+1 ] entonces
aux A[ j ], A[ j ] A [ j+1], A[ j+1] aux
flag VERDADERO
Fin Si
FinPara
ii+1
FinMientras
Fin Mtodo

Ordenacin por Insercin directa

Tambin conocido como Mtodo de la Baraja por ser el


que usan los jugadores de cartas para ordenar la
baraja.
La idea central consiste en insertar un elemento en su
parte izquierda, que ya se encuentra ordenada. Este
proceso se repite desde el segundo hasta el ltimo
elemento.

Ordenacin por Insercin directa

Por ejemplo, ordenar ascendentemente usando el


mtodo de insercin directa

15 67

16 44 27 12 35

Ordenacin por Insercin directa


Primera pasada
15 67

16 44 27 12 35

15 67

A[1] < A[0] No intercambio

16 44 27 12 35

Ordenacin por Insercin directa


Segunda pasada
15 67

16 44 27 12 35

A[2] < A[1] Intercambio

15

67 16 44 27 12 35

A[1] < A[0] Intercambio

15 67 16 44 27 12 35

Ordenacin por Insercin directa


Tercera pasada
8

15 67 16 44 27 12 35

A[3] < A[2] Intercambio

15 16 67 44 27 12 35

A[2] < A[1] No Intercambio

15 16 67 44 27 12 35

Ordenacin por Insercin directa


Cuarta pasada
8

15 16 67 44 27 12 35

A[4] < A[3] Intercambio

15 16 44 67 27 12 35

A[3] < A[2] No Intercambio

15 16 44 67 27 12 35

Ordenacin por Insercin directa


Quinta pasada
8

15 16 44 67 27 12 35

A[5] < A[4] Intercambio

15 16 44 27 67 12 35

A[4] < A[3] Intercambio

15 16 27 44 67 12 35

A[3] < A[2] No Intercambio

15 16 27 44 67 12 35

Ordenacin por Insercin directa


Sexta pasada
8

15 16 27 44 67 12 35

A[6] < A[5] Intercambio

15 16 27 44 12 67 35

A[5] < A[4] Intercambio

15 16 27 12 44 67 35

A[4] < A[3] Intercambio

15 16 12 27 44 67 35

A[3] < A[2] Intercambio

15 12 16 27 44 67 35

A[2] < A[1] Intercambio

12 15 16 27 44 67 35

A[1] < A[0] No intercambio

12 15 16 27 44 67 35

Ordenacin por Insercin directa


Stima pasada
8

12 15 16 27 44 67 35

A[7] < A[6] Intercambio

12 15 16 27 44 35 67

A[6] < A[5] Intercambio

12 15 16 27 35 44 67

A[5] < A[4] No intercambio

12 15 16 27 35 44 67

Ordenacin por Insercin directa


Mtodo Insercin (A,N)
Para i desde 1 hasta N-1 hacer
aux A[ i ]
ki-1
Mientras (k >= 0) y (aux < A[ k ]) hacer
A[ k+1 ] A[ k ]
kk-1
FinMientras
A[ k+1 ] aux
FinPara
Fin Mtodo

Anlisis de eficiencia del mtodo de


Insercin directa

El nmero mnimo de comparaciones y movimientos


sucede cuando los elementos ya est ordenados

Nmero de comparaciones
Cmn = n 1

Nmero de movimientos.
Mmn = 0

El nmero mximo de comparaciones y movimientos


entre elementos se da cuando los elementos del
arreglo estn en orden inverso.

Nmero de comparaciones
Cmx = 1 + 2 + + (n-1) = n * (n-1) / 2 = (n2 n) / 2

Nmero de movimientos
Mmx = 1 + 2 + + (n-1) = n * (n-1) / 2 = (n2 n) / 2

Anlisis de eficiencia del mtodo de


Insercin directa

El nmero de comparaciones y movimientos promedio se


da cuando los elementos aparecen aleatoriamente.

Se calcula sumando las comparaciones y movimientos


mximos y mnimos entre 2.
Nmero de comparaciones

C med

(n 2 n)
(n 1)

2
( n 2 n 2)

2
4

Nmero de movimientos.

M med

( n 2 n)
0

2
( n 2 n)

2
4

Anlisis de eficiencia del mtodo de


Insercin directa

Por ejemplo si son 100 elementos a ordenar


tenemos

Caso mejor (Ordenado)


99 comparaciones
0 movimientos
Caso medio (aleatorio)
2,524 comparaciones
2,475 movimientos
Caso peor (en orden inverso)
4,950 comparaciones
4,950 movimientos

Mtodo por Seleccin directa

Es ms eficiente que los anteriores, sin embargo no se


recomienda utilizarlo si el nmero de elementos del
arreglo es mediano o grande.
La idea bsica es buscar el menor elemento y
colocarlo en la primera posicin.
Luego se busca el segundo ms pequeo y se coloca
en la segunda posicin.
Y as sucesivamente hasta que todos los elementos
hayan sido ordenados.

Mtodo por seleccin directa

Por ejemplo ordenar ascendentemente utilizando el


mtodo de seleccin directa

15 67

16 44 27 12 35

Mtodo por seleccin directa


Primera pasada
Se haya el menor que es A[2] = 8
Se intercambia con el primero A[0]
Luego el arreglo queda de la siguiente manera:

67 15 16 44 27 12 35

Mtodo por seleccin directa


Segunda pasada
Se haya el segundo menor que es A[6] = 12
Se intercambia con el segundo A[1]
Luego el arreglo queda de la siguiente manera:

12 15 16 44 27 67 35

Mtodo por seleccin directa


Tercera pasada
Se haya el tercer menor que es A[2] = 15
Se intercambia con el tercero A[2]
Luego el arreglo queda de la siguiente manera:

12 15 16 44 27 67 35

Mtodo por seleccin directa


Cuarta pasada
Se haya el cuarto menor que es A[3] = 16
Se intercambia con el cuarto A[3]
Luego el arreglo queda de la siguiente manera:

12 15 16 44 27 67 35

Mtodo por seleccin directa


Quinta pasada
Se haya el quinto menor que es A[5] = 27
Se intercambia con el quinto A[4]
Luego el arreglo queda de la siguiente manera:

12 15 16 27 44 67 35

Mtodo por seleccin directa


Sexta pasada
Se haya el sexto menor que es A[7] = 35
Se intercambia con el sexto A[5]
Luego el arreglo queda de la siguiente manera:

12 15 16 27 35 67 44

Mtodo por seleccin directa


Stima pasada
Se haya el stimo menor que es A[7] = 44
Se intercambia con el stimo A[6]
Luego el arreglo queda de la siguiente manera,
completamente ordenado:

12 15 16 27 35 44 67

Mtodo por seleccin directa


Mtodo Seleccin (A,N)
Para i desde 0 hasta N-2 hacer
menor A[ i ], k i
Para j desde i+1 hasta N-1 hacer
Si A[ j ] < menor entonces
menor A[ j ], k j
Fin Si
Fin Para
A[ k ] A[ i ]
A[ i ] menor
Fin Para
Fin Mtodo

Anlisis de eficiencia del Mtodo por


seleccin directa

El nmero de comparaciones es independiente de la


disposicin inicial de los elementos en el arreglo.
En la primera pasada se realizan (n-1) comparaciones
En la segunda (n-2) comparaciones
Y as sucesivamente hasta 2 y 1 comparaciones en la
penltima y ltima pasadas.
Por consiguiente el nmero de comparaciones C es:

n * (n 1)
C (n 1) (n 2) 2 1
2
n2 n
C
2

Anlisis de eficiencia del Mtodo por


seleccin directa

El nmero de movimientos o intercambios siempre


ser:

M n 1

Por ejemplo si son 100 elementos a ordenar


tenemos para los casos mejor, peor y medio:

4950 comparaciones
99 movimientos

Você também pode gostar