La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

METODOS DE ORDENAMIENTO. DESCRIPCIÓN DEL PROBLEMA Se tiene un conjunto desordenado de valores del mismo tipo. Se desea construir un algoritmo para transformar.

Presentaciones similares


Presentación del tema: "METODOS DE ORDENAMIENTO. DESCRIPCIÓN DEL PROBLEMA Se tiene un conjunto desordenado de valores del mismo tipo. Se desea construir un algoritmo para transformar."— Transcripción de la presentación:

1 METODOS DE ORDENAMIENTO

2 DESCRIPCIÓN DEL PROBLEMA Se tiene un conjunto desordenado de valores del mismo tipo. Se desea construir un algoritmo para transformar dicho conjunto en un conjunto ordenado de la forma más sencilla y que se tare menor tiempo posible, empleando la menor cantidad de recursos. Lamentablemente a menor tiempo mayor complejidad de los algoritmos.

3 LOS ALGORITMOS DE ORDENAMIENTO SE UTILIZAN PARA RESOLVER AQUELLOS PROBLEMAS DE INFORMÁTICA DONDE INTERVIENEN LAS BÚSQUEDAS.

4 METODO DE LA BURBUJA

5 a[0]a[1]a[2]a[3]a[4]a[5] 1531211182 a[0] > a[1] lo cambio 3151211182 3121511182 3121115182 3121115182 3121115218 Al finalizar el mayor de los términos ocupa el lugar del máximo subíndice Primer pasada a[3] < a[4] no lo cambio

6 a[0]a[1]a[2]a[3]a[4]a[5] 3121115218 Segunda pasada El último término está ordenado, ahora iremos hasta el término a[4] 3121115218 3111215218 3111215218 3111221518

7 Restantes Pasadas a[0]a[1]a[2]a[3]a[4]a[5] 3111221518 3111221518 3111221518 3112121518 3112121518 3112121518 3211121518 3211121518 2311121518 2311121518 Finalmente el vector quedó ordenado

8 Para j = 4 hasta 0 salto –1 Fin Para Para n = 0 hasta j Fin Para Si a[n] > a[n +1] entonces hacer x = a[n] hacer a[n] = a[n+1] hacer a[n+1] = x Fin Si Implementación en seudocódigo

9 Implementación en C // METODO DE BURBUJA for( j =4; x > 0; x-- ) { for( n = 0; n < j; n++ ) { if( a[ n ] > a[ n + 1 ] ) { aux = a[ n ]; a[ n ] = a[ n + 1 ]; a[ n + 1] = aux; }

10 METODO DE INSERCIÓN

11 Desarrollo del método a[0]a[1]a[2]a[3]a[4]a[5] 1531211182 1531211182 3151211182 3121511182 a[1]<a[0]? Cambiarlo a[1]>a[0]? Terminar la pasada 3121511182 3121115182 3111215182 3111215182 a[4]>a[3]? Terminar la pasada

12 Desarrollo de Método (cont.) 3111215182 3111215218 3111221518 3112121518 3211121518 2311121518 El vector está ordenado

13 Para j = 1 hasta 5 hacer n = j Fin Para Mientras n > 1 y a[n] < a[ n-1] aux = a[n] a[n] = a[n-1] a[n-1] = aux hacer n = n - 1 Fin Mientras Implementación del método en pseudocódigo

14 Implementación del método en C //METODO DE SELECCION for( j = 1; x < CANT; x++ ) { n = j; while( n > 0 && a[ n ] < a[ n - 1 ] ) { aux = a[ n ]; a[ n ] = a[ n - 1 ]; a[ n - 1 ] = aux; n = n - 1; }

15 METODO DE SELECCIÓN

16 a[0]a[1]a[2]a[3]a[4]a[5] 1531211182 Primer Pasada V =0 Variable donde Guardamos el primer subíndice (0) 15 a[V]31211182 Si a[1] < a[V] Hacer V =1 153 a[V]1211182 a[2] < a[V]? No, Dejar 153 a[V]1211182 153 a[V]1211182 153 a[V]1211182 1531211182 a[V] V = 5 Seguidamente cambiamos a[V] con a[0] y el vector a queda 2312111815 El menor ocupa el lugar que le corresponde, no lo tocamos más

17 Segunda Pasada a[0]a[1]a[2]a[3]a[4]a[5] 23 a[V]12111815 Ahora empezamos haciendo V=1 23 a[V]12111815 23 a[V]12111815 23 a[V]12111815 V = 1 Seguidamente cambiamos a[V] con a[1] ( puede hacerse ) 2312111815 Puede verse que en esta pasada el vector quedó inalterado

18 a[0]a[1]a[2]a[3]a[4]a[5] 2312 a[V]111815 Pasadas Restantes 231211 a[V]1815 231211 a[V]1815 V = 3 Cambiar a[V] con a[2] 231112 a[V]1815 231112 a[V]1815 Cambiar a[V] con a[3] 23111218 a[V]15 Cambiar a[V] con a[4] 2311121518 Finalmente el vector quedó ordenado V = 5 V = 3

19 Para n = 0 hasta 4 Fin Para hacer aux = a[V] hacer a[V] = a[n] hacer a[n] = aux Hacer V = n Para i = n + 1 hasta 5 Fin Para Implementación del método en pseudocódigo Si a[ i ] < a[ V ] entonces hacer V = i Fin Si

20 Implementación en C //MÉTODO DE SELECCIÓN for( n = 0; n < CANT - 1; n++ ) { V = n; for( i = n+ 1; i < CANT; i++ ) { if( a[i] < a[V] ) V = i; } aux = a[V]; a[V] = a[n]; a[n] = aux; }

21 METODO DE SHELL

22 MODO DE FUNCIONAMIENTO a.Seleccionar un intervalo x (generalmente se toma la mitad de términos del vector). Si el vector tiene 8 términos se toma x = 4. b.Recorrer el vector comparando n con el término n+x. Si este es menor se intercambian los valores. Si a[n+x] < a[n] entonces se cambian a[n] con a[n+x] c.Repetir el punto b) hasta que no se realice ningún cambio. d.Reducir a la mitad el intervalo x y repetir los pasos a) al c) hasta que el intervalo sea cero.

23 Desarrollo del método de Shell a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7] 1825311615135 El vector a tiene 8 términos comenzamos haciendo n = 4 1825311615135 6253111815135 6153111825135 6153111825135 6153518251311 Fin de la pasada.Hubieron cambios por lo que debemos repetir el proceso con n = 4 a[4] < a[0]? Cambiarlo y anotar cambio

24 Desarrollo del método de Shell (cont.) a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7] 6153518251311 6153518251311 6153518251311 6153518251311 Esta vuelta no se produjeron cambios 6153518251311 Como no se produjeron cambios hacemos n = 2

25 Desarrollo del método de Shell (cont.) a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7] 6153518251311 3156518251311 Aquí se produce un cambio 3561518251311 3561518251311 3561518251311 3561513251811 3561513111825 Terminada la pasada. Hubieron cambios debemos repetir el proceso con n = 2

26 a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7] 3561513111825 Desarrollo del método de Shell (cont.) 3561513111825 3561513111825 3561513111825 3561113151825 3561113151825 3561113151825 Aquí se produce un cambio Terminada la pasada. Hubieron cambios debemos repetir el proceso con n = 2

27 Desarrollo del método de Shell (cont.) a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7] 3561113151825 3561113151825 3561113151825 3561113151825 3561113151825 3561113151825 3561113151825 No se produjeron cambios. Hacemos n = 1

28 a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7] 3561113151825 Desarrollo del método de Shell (cont.) 3561113151825 3561113151825 3561113151825 3561113151825 3561113151825 3561113151825 No se produjeron cambios y además n = 1 Esto significa que el vector quedó ordenado

29 Hacer salto = 4 Repetir hacer salto = salto / 2 Mientras salto > 0 Repetir Hacer cambio = 0 Mientras cambio = 1 Desarrollo del método en pseudocódigo Para n = salto hasta 7 Si a[n] < a[n-salto] entonces aux = a[n] a[n] = a[n – salto] a[n – salto] = aux hacer cambio = 1 Fin si Fin para

30 Desarrollo del método en C do { do { cambio = 0; for( n = salto; n < CANT ; n++ ) { if ( a [ n ] < a[ n - salto ] ) { aux = a[ n ]; a[ n ] = a[ n - salto ]; a[ n - salto ] = aux; cambio = 1; } }while ( cambio == 1 ); salto /= 2; }while ( salto > 0 );

31 FIN DE METODOS DE ORDENAMIENTO


Descargar ppt "METODOS DE ORDENAMIENTO. DESCRIPCIÓN DEL PROBLEMA Se tiene un conjunto desordenado de valores del mismo tipo. Se desea construir un algoritmo para transformar."

Presentaciones similares


Anuncios Google