PROGRAMACION DE ESTRUCTURAS DE DATOS IV. MÉTODOS DE ORDENAMIENTO.

Slides:



Advertisements
Presentaciones similares
El tamaño asignado para cada partición es el mismo. Cada partición, será ocupada por un proceso de menor o igual tamaño. El programador debe diseñar el.
Advertisements

Unidad 6 Métodos de Ordenamiento Internos
Método de ordenación por inserción
Ordenamiento de Arreglos
Complejidad de Algoritmos
ALGORITMOS DE ORDENAMIENTO
Paricial IV Ing. Esmeralda Elizabeth Rodríguez Rodríguez
Estructuras de Datos (ARRAYS)
ORDENACION POR EL METODO DE LA SACUDIDA (SHAKER SORT)
LAS TOPOLOGÍAS DE REDES
ARREGLOS y MATRICES UNIVERSIDAD NACIONAL AUTONOMA DE MEXICO
MÉTODOS DE CLASIFICACION
Programación (Estructura de Datos)
PROGRAMACION DE ESTRUCTURAS DE DATOS
Programación (Estructura de Datos)
UNIVERSIDAD LATINA (UNILA)
UNIVERSIDAD LATINA (UNILA) II.- ANALISIS DE ALGORITMOS
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS.
IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.
Algoritmos Aleatorizados
METODO DE ORDENAMIENTO POR SELECCIÓN.
Ordenación, Clasificación
UNIVERSIDAD AUTONOMA METROPOLITANA
PROGRAMACION II.  Es un conjunto de datos no necesariamente del mismo tipo, los cuales se podrán manipular o realizar cualquier operación sobre cada.
Unidad II Aplicaciones con Arreglos en Java y C++
UNIVERSIDAD ALAS PERUANAS FACULTAD DE INGENIERIAS Y ARQUITECTURA FACULTAD DE INGENIERIAS Y ARQUITECTURA ESCUELA PROFESIONAL DE INGENIERIAS DE SISTEMAS.
M.C. Yalu Galicia Hdez. (FCC/BUAP)
Algoritmos para Ordenar datos
Tema 8b Búsqueda y ordenación en arreglos. Ordenación Es un proceso que altera el orden de los elementos de un conjunto. Tiene asociada una relación de.
Objetivo: Facilitar la búsqueda de los elementos del conjunto ordenado
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
Estructuras de Datos Arreglos.
COMPUTACION 2009 Clase 6 Clase 7.
Métodos de búsqueda Unidad 6.
Tecnología de la información Unidad: 3 El software Profesor: Fernando J. Martini.
Estructura de Datos II Equipo 4 Equipo 7 Acosta Montiel Miguel A.
Resolución de Problemas y Algoritmos Uso de iteración con secuencias
(Organización y Manejo de Archivos)
Ingeniería en Sistemas Computacionales Estructura de Datos
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.
Operaciones con números complejos
Algoritmos de Ordenamiento y Complejidad
Quick Sort Estructura de Datos: Métodos de ordenamiento. José Alejandro Leal González Verito no m c tu nombre completo jejeje aquí va!!!
Administrador de procesos
EI, Profesor Ramón Castro Liceaga Agosto de 2005 UNIVERSIDAD LATINA (UNILA) PROGRAMACION ORIENTADA A OBJETOS EN JAVA (Optativa) PROGRAMACION CLIENTE /
EI, Profesor Ramón Castro Liceaga Agosto de 2005 UNIVERSIDAD LATINA (UNILA) PROGRAMACION ORIENTADA A OBJETOS EN JAVA (Optativa) ESTRUCTURA DEL LENGUAJE.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS.
Fundamentos de Programación
Ordenamiento en lenguaje c
METODOS DE BUSQUEDA EN C++ Oscar Michel Ruiz León
Computación I. CI-2125 Tema VII
ORDENAMIENTO DE DATOS Jorge Méndez Sánchez Eliúh Cuecuecha Hernández
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
UNIVERSIDAD NACIONAL AUTONOMA DE MEXICO MODULO IV ADMINISTRACIÓN DE BASES DE DATOS Respaldo y recuperacion de la Base de Datos E.I. L.E. Prof. Ramón Castro.
ARRAYS Y COLECCIONES DE DATOS. ARRAYS Arrays – Matriz – Vector Elemento del lenguaje que nos permite agrupar un conjunto de valores del mismo tipo, y.
UNIVERSIDAD LATINA IV. CONSULTAS AVANZADAS CON BASES DE DATOS. E.I. L.E. Prof. Ramón Castro Liceaga.
EI, Profesor Ramón Castro Liceaga IV. AREAS DE EVALUACIÓN DE LA AUDITORIA EN INFORMÁTICA. UNIVERSIDAD LATINA (UNILA)
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) V. GESTIÓN DE TIPOS Y GENERACIÓN DE CÓDIGOS.
ESTRUCTURAS DE DATOS “Conceptualización de estructuras de datos” Por: Eduardo Robayo.
EI, Profesor Ramón Castro Liceaga Redes III LAS TOPOLOGÍAS DE REDES Costo Beneficio.
UNIVERSIDAD LATINA (UNILA)
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
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.
Ordenación externa: Partición de archivos, Ordenación por mezcla directa y Ordenación por mezcla natural LINNY ROSMERY ABREU VARGAS.
METODOS DE ORDENAMIENTO CHRISTIAN MICHAEL OBANDO GARCES JOAO ADRIAN BARIONUEVO.
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.
Transcripción de la presentación:

PROGRAMACION DE ESTRUCTURAS DE DATOS IV. MÉTODOS DE ORDENAMIENTO. UNIVERSIDAD LATINA PROGRAMACION DE ESTRUCTURAS DE DATOS IV. MÉTODOS DE ORDENAMIENTO. EI, Profesor Ramón Castro Liceaga

(mayor -> menor o menor -> mayor) QUE SON ORDENAMIENTOS DE DATOS ? SORT / ORDENACION.- Es reagrupar un grupo de datos en una secuencia especifica de orden (mayor -> menor o menor -> mayor) EI, Profesor Ramón Castro Liceaga

EI, Profesor Ramón Castro Liceaga LA ORDENACION DE ELEMENTOS PUEDE SER: Ordenación Interna.- En memoria principal (arrays, listas). Ordenación Externa.- En memoria secundaria. (dispositivos de almacenamiento externo.- archivos y Bases de datos). EI, Profesor Ramón Castro Liceaga

EI, Profesor Ramón Castro Liceaga TIPOS DE ORDENACION Los mas usuales son: POR INTERCAMBIO (Compara e intercambia elementos.- Burbuja) POR SELECCIÓN (Selecciona el mas pequeño y lo intercambia) POR INSERSION (Inserta los elementos en una sublista ordenada) METODO SHELL (Es una insersión mejorada) ORDENACION RAPIDA (Quick Sort.- divide una lista en dos partes) EI, Profesor Ramón Castro Liceaga

EI, Profesor Ramón Castro Liceaga ALGORITMO DE EJEMPLO DE UN ORDENAMIENTO PROBLEMA: En una Empresa el área de Recursos Humanos requiere ordenar 3 números de empleados obteniendo la siguiente salida. EI, Profesor Ramón Castro Liceaga

EI, Profesor Ramón Castro Liceaga POR INTERCAMBIO (Burbuja o bubble sort ) El bubble sort, también conocido como ordenamiento burbuja, funciona de la siguiente manera: Se va comparando cada elemento del arreglo con el siguiente; si un elemento es mayor que el que le sigue, entonces se intercambian; esto producirá que en el arreglo quede como su último elemento, el más grande. Este proceso deberá repetirse recorriendo todo el arreglo hasta que no ocurra ningún intercambio. Los elementos que van quedando ordenados ya no se comparan. "Baja el más pesado". EI, Profesor Ramón Castro Liceaga

EI, Profesor Ramón Castro Liceaga EJEMPLO: Ordenamiento por Burbuja o bubble sort Consiste en comparar pares de elementos adyacentes e intercambiarlos entre sí hasta que estén todos ordenados. Sea un array de 6 números de empleados: {40,21,4,9,10,35}: Primera pasada: {21,40,4,9,10,35} <-- Se cambia el 21 por el 40. {21,4,40,9,10,35} <-- Se cambia el 40 por el 4. {21,4,9,40,10,35} <-- Se cambia el 9 por el 40. {21,4,9,10,40,35} <-- Se cambia el 40 por el 10. {21,4,9,10,35,40} <-- Se cambia el 35 por el 40. Segunda pasada: {4,21,9,10,35,40} <-- Se cambia el 21 por el 4. {4,9,21,10,35,40} <-- Se cambia el 9 por el 21. {4,9,10,21,35,40} <-- Se cambia el 21 por el 10. Ya están ordenados, pero para comprobarlo habría que acabar esta segunda comprobación y hacer una tercera. EI, Profesor Ramón Castro Liceaga

Prototipo de función.- Es la declaración de la función en el código Que son las funciones ? Funciones.- Son bloques de código utilizados para dividir un programa en partes mas pequeñas Prototipo de función.- Es la declaración de la función en el código Variables: Gobales.- Nivel programa locales.- Nivel funcion

EI, Profesor Ramón Castro Liceaga // Definimos una función donde A=arreglo y N=tamaño int bubblesort(int A[],int N){ int i,j,AUX; for(i=2;i<=N;i++){ //siguiente for(j=N;j>=i;j--){ //anterior if(A[j-1]>A[j]){ //si i > d intercambio AUX=A[j-1]; //guardamos en AUX A[j-1]=A[j]; //pasamos d a i A[j]=AUX; //copiamos AUX en d } return 1; EI, Profesor Ramón Castro Liceaga

EI, Profesor Ramón Castro Liceaga Practica: Hacer un programa con Arreglos que ordene por el método de la burbuja Bubblesort en forma ascendente un vector de 10 números de empleados de una empresa. Códificación : main() { int A[10]; llenavector(A,10); // es uma función printf("ORDENAMIENTO POR BURBUJA \n"); printf("Numeros a ordenar: \n"); salida(A,10); // es uma función printf("\n\nNumeros ordenados: \n"); bubblesort(A,10); // es uma función getch(); } Pseudocódigo: 1.- Inicio 2.- Definir un vector de 10 números 3.- Llenar el vector con los números 4.- Mostrar la salida de los números capturados en desorden 5.- Ordenar el vector por el método bubblesort 6.- Mostrar la salida con los números ordenados del vector EI, Profesor Ramón Castro Liceaga

EI, Profesor Ramón Castro Liceaga Función que llena el vector con los números int llenavector(int A[],int N){ int c; int x; cout<<"Ingrese 10 numeros de empleados:"<<endl; for(c=1;c<=N;c++){ cin>>x; // lee x numero A[c]=x; // lo graba en el vector } return 1; EI, Profesor Ramón Castro Liceaga

EI, Profesor Ramón Castro Liceaga Ordenar el vector por el método bubblesort int bubblesort(int A[],int N){ int i,j,AUX; for(i=2;i<=N;i++){ for(j=N;j>=i;j--){ if(A[j-1]>A[j]){ AUX=A[j-1]; //Intercambio A[j-1]=A[j]; A[j]=AUX; } return 1; EI, Profesor Ramón Castro Liceaga

EI, Profesor Ramón Castro Liceaga Muestra la salida de los números en el arreglo. int salida(int A[],int N){ int c; for(c=1;c<=N;c++){ printf("%d, ",A[c]); // muestra el vector } return 1; // Nota: este mismo procedimiento fue el que se utilizó para mostrar los datos desordenados.(solo se escribe una vez) EI, Profesor Ramón Castro Liceaga

Practica # S01: Construir el programa con Arreglos que ordene por el método de la burbuja Bubblesort en forma ascendente un vector de 10 números de empleados de una empresa. Librerias: #include <stdlib.h> #include <stdio.h> #include <iostream> #include <conio.h> using namespace std; EI, Profesor Ramón Castro Liceaga

EI, Profesor Ramón Castro Liceaga TIPOS DE ORDENACION Los mas usuales son: POR INTERCAMBIO (Compara e intercambia elementos) POR INSERSION (Inserta los elementos en una sublista ordenada) POR SELECCIÓN (Selecciona el mas pequeño y lo intercambia) METODO SHELL (Es una insersión mejorada) ORDENACION RAPIDA (Quick Sort.- divide una lista en dos partes) CUALES SON LOS CRITERIOS DE SELECCIÓN DEL MÉTODO DE ORDENAMIENTO ANÁLISIS COMPARATIVO DE LAS COMPLEJIDADES DE LOS DISTINTOS MÉTODOS DE ORDENAMIENTO EI, Profesor Ramón Castro Liceaga

POR INSERSION El insertion sort es una manera muy natural de ordenar para un ser humano, y puede usarse fácilmente para ordenar un conjunto de cartas numeradas en forma arbitraria. Algoritmo: Consiste en tomar uno por uno los elementos de un arreglo y lo recorre hacia su posición con respecto a los anteriormente ordenados. Así empieza con el segundo elemento y lo ordena con respecto al primero. Luego sigue con el tercero y lo coloca en su posición ordenada con respecto a los dos anteriores, así sucesivamente hasta recorrer todas las posiciones del arreglo. Ejemplo:

EI, Profesor Ramón Castro Liceaga El algoritmo en pseudocódigo algoritmo insertSort( A : lista de elementos ordenables ) para i=1 hasta longitud(A) hacer index=A[i] j=i-1 mientras j>=0 y A[j]>index hacer A[j+1] = A[j] j = j - 1 fin mientras A[j+1] = index fin para fin algoritmo EI, Profesor Ramón Castro Liceaga

EI, Profesor Ramón Castro Liceaga Programa completo // insert-sort.cpp #include <stdio.h> #include <stdlib.h> main(){ int a[]={67,8,15,44,27,12,35}; int i,aux,k; for(i=1;i<7;i++){ aux=a[i]; k=i-1; while((k<i)&&(aux<a[k])){ a[k+1]=a[k]; k=k-1;} a[k+1]=aux;} for(i=0;i<7;i++){ printf("%i\n",a[i]);} system("pause"); } EI, Profesor Ramón Castro Liceaga

EI, Profesor Ramón Castro Liceaga POR SELECCION Este algoritmo trabaja seleccionando el dato más pequeño a ser ordenado que aún esta en la lista, y luego haciendo un intercambio con el elemento en la siguiente posición. ejemplo, si tenemos el array {40,21,4,9,10,35}, los pasos a seguir son : {4,21,40,9,10,35} <-- Se coloca el 4, el más pequeño, en primera posición : se cambia el 4 por el 40. {4,9,40,21,10,35} <-- Se coloca el 9, en segunda posición: se cambia el 9 por el 21. {4,9,10,21,40,35} <-- Se coloca el 10, en tercera posición: se cambia el 10 por el 40. {4,9,10,21,40,35} <-- Se coloca el 21, en tercera posición: ya está colocado. {4,9,10,21,35,40} <-- Se coloca el 35, en tercera posición: se cambia el 35 por el 40. EI, Profesor Ramón Castro Liceaga

EI, Profesor Ramón Castro Liceaga POR SELECCION Otro ejemplo del selection Sort. Para un arreglo de : 8, 5, 2, 6, 9, 3, 1, 4,0,7 EI, Profesor Ramón Castro Liceaga

Código de la función por selección. void selectionSort(int numbers[], int array_size) { int i, j; int min, temp; for (i = 0; i < array_size-1; i++){ min = i; for (j = i+1; j < array_size; j++){ if (numbers[j] < numbers[min]){ min = j; temp = numbers[i]; numbers[i] = numbers[min]; numbers[min] = temp; }

EI, Profesor Ramón Castro Liceaga POR METODO SHELL (Ordenamiento por bloques de datos) El algoritmo realiza multiples pases a través de la lista, y en cada pasada ordena un numero igual de items. El tamaño del set de datos (también llamado distancia o intervalo) a ser ordenado va creciendo a medida que el algoritmo recorre el array hasta que finalmente el set esta compuesto por todo el array en si mismo. Ejemplo EI, Profesor Ramón Castro Liceaga

EI, Profesor Ramón Castro Liceaga POR METODO SHELL Por ejemplo, lo pasos para ordenar el array {40,21,4,9,10,35} mediante el método de Shell serían: Salto=3: Primera pasada: {9,21,4,40,10,35} <-- se intercambian el 40 y el 9. {9,10,4,40,21,35} <-- se intercambian el 21 y el 10. Salto=1: {9,4,10,40,21,35} <-- se intercambian el 10 y el 4. {9,4,10,21,40,35} <-- se intercambian el 40 y el 21. {9,4,10,21,35,40} <-- se intercambian el 35 y el 40. Segunda pasada: {4,9,10,21,35,40} <-- se intercambian el 4 y el 9. Con sólo 6 intercambios se ha ordenado el array, cuando por inserción se necesitaban muchos más. EI, Profesor Ramón Castro Liceaga

EI, Profesor Ramón Castro Liceaga void shellSort(int numbers[], int array_size) { int i, j, increment, temp; increment = 3; while (increment > 0) for (i=0; i < array_size; i++) j = i; temp = numbers[i]; while ((j >= increment) && (numbers[j-increment] > temp)) numbers[j] = numbers[j - increment]; j = j - increment; } numbers[j] = temp; if (increment/2 != 0) increment = increment/2; else if (increment == 1) increment = 0; else increment = 1; EI, Profesor Ramón Castro Liceaga

#include<stdio.h> #include<conio.h> //shelSort.cpp #include<stdio.h> #include<conio.h> #include<cstdlib> void shellsort(int a[],int n) { int j,i,k,m,mid; for(m = n/2;m>0;m/=2) for(j = m;j< n;j++) for(i=j-m;i>=0;i-=m) if(a[i+m]>=a[i]) break; else mid = a[i]; a[i] = a[i+m]; a[i+m] = mid; } //shelSort.cpp (continuacion) main() { int a[10],i,n; system("cls"); printf("Ingrese el numero de elementos\t: "); scanf("%d",&n); for(i=0;i< n;i++) printf("\nElement %d\t: ",i+1); scanf("%d",&a[i]); } printf("\nEn desorden : "); printf("%5d",a[i]); shellsort(a,n); printf("\nOrdenado : "); getch(); return 0;

EI, Profesor Ramón Castro Liceaga ORDENACION RAPIDA (Quick Sort) algoritmo recursivo. El Quick sort es un algoritmo del estilo divide y venceras. Es bastante más rápido que el merge sort. El algoritmo de recursión consiste en una serie de cuatro pasos: 1. Si hay menos de un elemento a ser ordenado retorna inmediatamente (termina). 2. Tomar un elemento del vector que sirve como “muestra” 3. Dividir el array en dos partes, una con los elementos mayores y una con los elementos menores al muestra. 4. Repite recursivamente el algoritmo para las dos mitades del array original hasta que queda ordenado. EI, Profesor Ramón Castro Liceaga

EI, Profesor Ramón Castro Liceaga Quicksort en acción sobre una lista de números aleatorios. Las líneas horizontales son valores pivote EI, Profesor Ramón Castro Liceaga

EI, Profesor Ramón Castro Liceaga Parámetros: Se debe llamar a la función Quicksort desde donde quiera ejecutarse Ésta llamará a colocar pivote para encontrar el valor del mismo Se ejecutará el algoritmo Quicksort de forma recursiva a ambos lados del pivote int colocar(int *v, int b, int t) { int i; int pivote, valor_pivote; int temp; pivote = b; valor_pivote = v[pivote]; for (i=b+1; i<=t; i++){ if (v[i] < valor_pivote){ pivote++; temp=v[i]; v[i]=v[pivote]; v[pivote]=temp; } temp=v[b]; v[b]=v[pivote]; return pivote; void Quicksort(int* v, int b, int t) { int pivote; if(b < t){ pivote=colocar(v, b, t); Quicksort(v, b, pivote-1); Quicksort(v, pivote+1, t); } EI, Profesor Ramón Castro Liceaga

EI, Profesor Ramón Castro Liceaga Eficiencia en tiempo de ejecución. Una medida de eficiencia es: Contar el # de comparaciones (C) Contar el # de movimientos de elementos (M) Estos están en función de el #(n) de elementos a ser ordenados. EI, Profesor Ramón Castro Liceaga

EI, Profesor Ramón Castro Liceaga Algoritmos de ordenamiento: Internos: Inserción directa. Inserción binaria. Selección directa. Burbuja. Shake. Intercambio directo. Shell. Inserción disminución incremental. Heap. Tournament. Ordenamiento de árbol. Quick sort. Sort particionado. Merge sort. Radix sort. Cálculo de dirección. Algoritmos de ordenamiento: Externos: 1.Straight merging. 2.Natural merging. 3.Balanced multiway merging. 4.Polyphase sort. 5.Distribution of initial runs. EI, Profesor Ramón Castro Liceaga

EI, Profesor Ramón Castro Liceaga Criterios de selección del método de ordenamiento EI, Profesor Ramón Castro Liceaga

EI, Profesor Ramón Castro Liceaga Actividad adicional: Hacer un programa en C, C++ que muestre un menú que integre los métodos de ordenamientos anteriormente vistos. Fuentes: http://aprender.fca.unam.mx/~rcastro/algoritmos-de-ordenamiento.pdf Ejemplos de algoritmos de ordenamiento y código Ejemplos animados. http://www.sorting-algorithms.com/bubble-sort EI, Profesor Ramón Castro Liceaga

EI, Profesor Ramón Castro Liceaga GRACIAS POR TU ATENCION … EI, Profesor Ramón Castro Liceaga