METODOS DE ORDENAMIENTO

Slides:



Advertisements
Presentaciones similares
ORDENACION POR EL METODO DE LA SACUDIDA (SHAKER SORT)
Advertisements

METODOS DE ORDENAMIENTO. DESCRIPCIÓN DEL PROBLEMA Se tiene un conjunto desordenado de valores del mismo tipo. Se desea construir un algoritmo para transformar.
Algoritmos para Ordenar datos
Ordenación y Búsqueda.
Ciclos disponibles en Visual Basic Nury Capera Tovar.
¿ Como Cambiamos?.
1 Ordenación, Clasificación Introducción Algoritmos Complejidad.
Las reglas del juego UNO
Estructuras de Control en Visual Basic.net
Actividad #2 Los algoritmos
. Primera Open Class Asignatura: Programación Estructurada Tema:
Optimización: Programación Lineal
Olimpiadas Chilenas de Informática - Formación
Ingeniería en Sistemas
Cap. 2 – Movimiento en Una Dimension
Conceptos básicos de programación
Fundamentos de programación
1. Desarrollo de Programas iterativos usando invariante
Estructuras de Control en Visual Basic.net
Unidad 3: Eficiencia de Algoritmos Tema VI: Ordenamiento.
Introducción a los algoritmos
Arreglos. en Lenguaje C n
Tema 4 Árboles Prof. Oscar Adolfo Vallejos.
Tecnología e Informática UNIVERSIDAD PONTIFICIA BOLIVARIANA
Programación Básica con NQC
Listas Dinámicas.
Programación I MC Beatriz Beltrán Martínez
Unidad 1. Conceptos básicos
Desarrollado por: Guillermo Verdugo Bastias
METODO DE TRANSPORTE APROXIMACION DE VOGEL
Estructuras de control en PHP
¿Cómo lo vamos a realizar?
CAPACIDAD DE DETECCION Y CORRECCION DE ERRORES
Sopa de letras en VBA Ficha 5 Paso a paso Conocer el problema Pág. 1
ESTRUCTURAS DE CONTROL EN VISUAL BASIC.NET Prof.: Rafael Mourglia.
Fundamentos de programación
Tema 6 Clasificación de algoritmos
Métodos de búsqueda. Introdución Esta operación se utiliza basicamente para recuperar datos que se habian almacenado con anticipación. El resultado puede.
MEDIANA.
Tema 9. Estructuras de repetición. Clase 2
INFORMATICA DEL CBU Clase 11 Año 2016 ARREGLOS.
Tema 5 Representación y Técnicas de Diseño de Algoritmos
Programación básica.
Introducción a los algoritmos
Árboles Binarios de Búsqueda (ABB)
Método de ordenamiento SHELL Aparicio Pérez Antonio Habacuc Domínguez Hernández Jonathan Gallegos Matinés Josué Roberto Rincón Solís Adriana Elizabeth.
FUNDAMENTOS DE PROGRAMACION
Fundamentos de Informática Especialidad de Electrónica –
Curso de Programación Estructurada
Progresiones. La esencia de la matemática no es hacer las cosas simples complicadas, sino hacer las cosas complicadas simples (S. Gudder) Montoya.
Tema 7 Arreglos Parte 3.
Diseño de algoritmos.
Conversión de Binario a Decimal
Estructuras de Control
Método de Ordenamiento por Inserción. El método recorrer el Vector de Izquierda a Derecha, tomando la posición Actual y Comparándola con su Izquierda.
MÉTODO SIMPLEX. Ejemplo de Simplex: Vamos a resolver el siguiente problema: MaximizarZ = f(x 1,x 2 ) = 3x 1 + 2x 2 Sujeto a:2x 1 + x 2 ≤ 18 2x 1 + 3x.
METODOS DE ORDENAMIENTO CHRISTIAN MICHAEL OBANDO GARCES JOAO ADRIAN BARIONUEVO.
CAPACIDAD DE DETECCION Y CORRECCION DE ERRORES
Ordenamiento Ordenar una estructura de datos consiste en reacomodar sus elementos de acuerdo a algún criterio. Por ejemplo, los mensajes pueden ordenarse.
Universidad Autónoma del Estado de México
Explicacion Del ejercicio.
Departamento de Ingeniería de Sistemas e Industrial
Bucles e Iteración Capítulo 5 Python para Todos
Tema 8. Estructuras de decisión. Clases 1 y 2.
ALGORITMO DE ORDENAMIENTO POR BURBUJA. El método de la burbuja es uno de los mas simples, es tan fácil como comparar todos los elementos de una lista.
ORDENAMIENTO POR EL MÉTODO DEL SHAKER SORT (SACUDIDA)
Macros EN EXCEL.
UNIVERSIDAD AUTÓNOMA DE SINALOA FACULTAD DE INFORMÁTICA CULIACÁN
Ordenación Por Inserción
UNIVERSIDAD AÚTONOMA DE SINALOA “Facultad de Informática Culiacán”
Transcripción de la presentación:

METODOS DE ORDENAMIENTO

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.

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

METODO DE LA BURBUJA

a[0] > a[1] lo cambio a[3] < a[4] no lo cambio a[0] a[1] a[2] a[3] a[4] a[5] 15 3 12 11 18 2 Primer pasada 3 15 12 11 18 2 3 12 15 11 18 2 3 12 11 15 18 2 3 12 11 15 18 2 3 12 11 15 2 18 Al finalizar el mayor de los términos ocupa el lugar del máximo subíndice

El último término está ordenado, ahora iremos hasta el término a[4] Segunda pasada a[0] a[1] a[2] a[3] a[4] a[5] 3 12 11 15 2 18 3 12 11 15 2 18 3 11 12 15 2 18 3 11 12 15 2 18 3 11 12 2 15 18

Finalmente el vector quedó ordenado 3 11 12 2 15 18 Restantes Pasadas 3 11 12 2 15 18 3 11 12 2 15 18 3 11 2 12 15 18 3 11 2 12 15 18 3 11 2 12 15 18 Finalmente el vector quedó ordenado 3 2 11 12 15 18 3 2 11 12 15 18 2 3 11 12 15 18 2 3 11 12 15 18

Implementación en seudocódigo 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 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; }

METODO DE INSERCIÓN

a[1]<a[0]? Cambiarlo a[0] a[1] a[2] a[3] a[4] a[5] 15 3 12 11 18 2 a[1]>a[0]? Terminar la pasada Desarrollo del método 15 3 12 11 18 2 3 15 12 11 18 2 3 12 15 11 18 2 a[4]>a[3]? Terminar la pasada 3 12 15 11 18 2 3 12 11 15 18 2 3 11 12 15 18 2 3 11 12 15 18 2

Desarrollo de Método (cont.) 3 11 12 15 18 2 3 11 12 15 2 18 Desarrollo de Método (cont.) El vector está ordenado 3 11 12 2 15 18 3 11 2 12 15 18 3 2 11 12 15 18 2 3 11 12 15 18

Implementación del método en pseudocódigo 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 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; }

METODO DE SELECCIÓN

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

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

Finalmente el vector quedó ordenado 2 3 12 a[V] 11 18 15 V = 3 2 3 12 11 a[V] 18 15 2 3 12 11 a[V] 18 15 Pasadas Restantes V = 3 Cambiar a[V] con a[2] 2 3 11 12 a[V] 18 15 V = 5 2 3 11 12 a[V] 18 15 Finalmente el vector quedó ordenado Cambiar a[V] con a[3] 2 3 11 12 18 a[V] 15 Cambiar a[V] con a[4] 2 3 11 12 15 18

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

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;

METODO DE SHELL

MODO DE FUNCIONAMIENTO 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. 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] Repetir el punto b) hasta que no se realice ningún cambio. Reducir a la mitad el intervalo x y repetir los pasos a) al c) hasta que el intervalo sea cero.

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

Desarrollo del método de Shell (cont.) 6 15 3 5 18 25 13 11 Esta vuelta no se produjeron cambios 6 15 3 5 18 25 13 11 6 15 3 5 18 25 13 11 6 15 3 5 18 25 13 11 6 15 3 5 18 25 13 11 Como no se produjeron cambios hacemos n = 2

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

Desarrollo del método de Shell (cont.) 3 5 6 15 13 11 18 25 Aquí se produce un cambio 3 5 6 15 13 11 18 25 3 5 6 15 13 11 18 25 Terminada la pasada. Hubieron cambios debemos repetir el proceso con n = 2 3 5 6 15 13 11 18 25 3 5 6 11 13 15 18 25 3 5 6 11 13 15 18 25 3 5 6 11 13 15 18 25

Desarrollo del método de Shell (cont.) 3 5 6 11 13 15 18 25 3 5 6 11 13 15 18 25 3 5 6 11 13 15 18 25 No se produjeron cambios. Hacemos n = 1 3 5 6 11 13 15 18 25 3 5 6 11 13 15 18 25 3 5 6 11 13 15 18 25 3 5 6 11 13 15 18 25

Desarrollo del método de Shell (cont.) 3 5 6 11 13 15 18 25 3 5 6 11 13 15 18 25 No se produjeron cambios y además n = 1 Esto significa que el vector quedó ordenado 3 5 6 11 13 15 18 25 3 5 6 11 13 15 18 25 3 5 6 11 13 15 18 25 3 5 6 11 13 15 18 25 3 5 6 11 13 15 18 25

Desarrollo del método en pseudocódigo Hacer salto = 4 Repetir hacer salto = salto / 2 Mientras salto > 0 Repetir Hacer cambio = 0 Mientras cambio = 1 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

Desarrollo del método en C { 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 ); Desarrollo del método en C

FIN DE METODOS DE ORDENAMIENTO