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

Slides:



Advertisements
Presentaciones similares
Capítulo 2 Algoritmos.
Advertisements

Unidad 6 Métodos de Ordenamiento Internos
Unidad 8 Métodos de Búsqueda
Descomposición en Fracciones simples.
funciones Por: Carlos Alberto García Acosta
Investigación de Operaciones
ALGORITMOS DE ORDENAMIENTO
Fundamentos de Programación
Diseño y análisis de algoritmos
BALANCEO DE ECUACIONES QUÍMICAS
Seminario de Actualización - Excel Avanzado y Macros
ORDENACION POR EL METODO DE LA SACUDIDA (SHAKER SORT)
ÁRBOLES BINARIOS DE BUSQUEDA
1.5 Algoritmos, Pseudocódigo y Diagramas de Flujo
Curso de Programación 1 Plan 97
7 Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Luis Hernández Yáñez Facultad de Informática Universidad.
MÉTODOS DE CLASIFICACION
PROGRAMACION DE ESTRUCTURAS DE DATOS
PROGRAMACION DE ESTRUCTURAS DE DATOS IV. MÉTODOS DE ORDENAMIENTO.
Algoritmos de Búsqueda
Algoritmos Aleatorizados
VECTORES.
PARADIGMA Es un esquema de pensamiento que nos lleva a concebir las cosas de una manera determinada. el término paradigma puede indicar el concepto de esquema.
Solución de problemas por búsqueda inteligente
APLICACIONES DE PILAS Estructuras de Datos.
Ordenación, Clasificación
Estructuras de Control
Material de apoyo Unidad 8 Estructura de datos
ALGORITMOS es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos.
Resolución de Problemas Método Simplex
Programación Lineal Unidad 1 Parte 3.
DIVISIÓN DE POLINOMIOS 1
Algoritmos para Ordenar datos
Algoritmos.
Objetivo: Facilitar la búsqueda de los elementos del conjunto ordenado
Estructura de Datos y Algoritmos

Estructuras de Datos Arreglos.
COMPUTACION 2009 Clase 6 Clase 7.

Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un.
WHILE Estructuras Repetitivas
Definición: Reorganizar un conjunto dado de objetos en una secuencia especificada Objetivo: Facilitar la búsqueda de los elementos del conjunto ordenado.
Búsqueda y ordenación Programación II 7-8 de enero de 2009.
Ing. En sistemas computacionales Estructuras de datos Tema: método de ordenamiento burbuja.
Aplicación de estructuras de datos
Ordenación y Búsqueda.
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
Arreglos Programación I MC Beatriz Beltrán Martínez.
1. Desarrollo de Programas iterativos usando invariante
Fundamentos de Programación Iteraciones
1 Otros algoritmos de ordenación. 2 Método de ordenación por inserción Se divide la tabla en dos subtablas: - la subtabla de la izquierda está ordenada.
Algoritmos de Ordenamiento y Complejidad
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 2: Divide y Vencerás Unidad 1: Nociones básicas.
COMPUTO III Ing. Jimmy Ojeda Arnica.
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
Ordenamiento en lenguaje c
METODOS DE BUSQUEDA EN C++ Oscar Michel Ruiz León
COMO CALCULAR LOS LIMITES SUPERIORES E INFERIORES
ROUND ROBIN.
Ejemplo 3.3 El robot debe recorrer la avenida 1 hasta encontrar una esquina con flor y papel. Al finalizar el recorrido se debe informar la cantidad de.
Algoritmo.
ORDENAMIENTO DE DATOS Jorge Méndez Sánchez Eliúh Cuecuecha Hernández

PROGRAMACIÓN Grupo de Modelamiento de Sistemas
ESTRUCTURAS DE DATOS “Conceptualización de estructuras de datos” Por: Eduardo Robayo.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Ciclos condicionales y exactos Estructura de control de ciclos
UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO FACULTAD DE INGENIERÍA COORDINACIÓN DE MATERIAS PROPEDÉUTICAS INGENIERÍA EN SISTEMAS ENERGÉTICOS SUSTENTABLES.
METODOS DE ORDENAMIENTO
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]a[2]a[3]a[4]a[5] a[0] > a[1] lo cambio 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

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

Restantes Pasadas a[0]a[1]a[2]a[3]a[4]a[5] Finalmente el vector quedó ordenado

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

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

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

Desarrollo de Método (cont.) El vector está ordenado

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

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

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

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

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

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

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 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.

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

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

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

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

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

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

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

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 );

FIN DE METODOS DE ORDENAMIENTO