Ordenamiento en lenguaje c

Slides:



Advertisements
Presentaciones similares
Unidad 6 Métodos de Ordenamiento Internos
Advertisements

ESTRUCTURA DE DATOS Unidad 05 ALGORITMOS DE BUSQUEDA.
Diseño y análisis de algoritmos
ORDENACION POR SELECCIÓN DIRECTA
Complejidad de Algoritmos
EQUIPO ·# 3 SISTEMAS OPERATIVOS
ALGORITMOS DE ORDENAMIENTO
Ordenamiento Interno y Búsqueda Binaria
Paricial IV Ing. Esmeralda Elizabeth Rodríguez Rodríguez
Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas.
ORDENACION POR EL METODO DE LA SACUDIDA (SHAKER SORT)
Ordenamiento Radix Equipo 3 Arenas Sapien Jorge Iván
Punteros Universidad Nacional Mayor de San Marcos
MÉTODOS DE CLASIFICACION
PROGRAMACION DE ESTRUCTURAS DE DATOS
PROGRAMACION DE ESTRUCTURAS DE DATOS IV. MÉTODOS DE ORDENAMIENTO.
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.
Windows XP sp3.
METODO DE ORDENAMIENTO POR SELECCIÓN.
INTEGRANTES ALEXIS MENDOZA ALDAIR ARRIETA CARLOS PASTOR LORENA RODRIGUEZ ANTHONY JIMENEZ.
Ordenación, Clasificación
Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Computación Métodos Numéricos Método de la regla falsa Balderas Nieves Dulce Ivett.
ESTRUCTURAS DE CONTROL
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++
M.C. Yalu Galicia Hdez. (FCC/BUAP)
Programación Lineal Unidad 1 Parte 3.
Microsoft Word.
Algoritmos para Ordenar datos
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
ESTRUCTURA DE DATOS EN JAVA
Estructuras de Datos Arreglos.
Algoritmos de búsqueda
Métodos de búsqueda Unidad 6.
Elaborado por: Guillermo Baquerizo I Término
Sistemas decimal, binario, octal y hexadecimal
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.
Sistemas de numeración
Ingeniería en Sistemas Computacionales Estructura de Datos
Divide y vencerás 1. Método general.
Aplicación de estructuras de datos
Ordenación y Búsqueda.
Capítulo 7 Gestión de memoria.
Arreglos Programación I MC Beatriz Beltrán Martínez.
Operaciones con números complejos
Análisis y Diseño de Algoritmos
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!!!
Material de apoyo Unidad 7 Estructura de datos
Procesamiento Digital de Imágenes
Algoritmos y Estructura de Datos Tema: Vectores 2
Ordenamiento por Intercambio Directo
Fundamentos de Programación
Estructura de datos I CIS - UABJB.
Arreglos Vectores y Matrices.
Diseño y análisis de algoritmos Análisis de Algoritmos II.
Elaboración de algoritmos usando lógica de programación
Capítulo 2: Métodos de conteo Autor: José Alfredo Jiménez Murillo.
METODOS DE BUSQUEDA EN C++ Oscar Michel Ruiz León
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
Algoritmos y Desarrollo de Programas I
ORDENAMIENTO DE DATOS Jorge Méndez Sánchez Eliúh Cuecuecha Hernández
Análisis y Diseño de Algoritmos Programa #1 Samuel Garrido Daniel.

PROGRAMACIÓN Grupo de Modelamiento de Sistemas
ESTRUCTURAS DE DATOS “Conceptualización de estructuras de datos” Por: Eduardo Robayo.
Lenguaje ensamblador Conceptos introductorios. Formatos de Instrucción. Modos de Direccionamiento. Conjunto de instrucciones básico. Introducción al Lenguaje.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Sistema Numérico Binario Prof. Carlos Ortiz Muñoz.
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.
Transcripción de la presentación:

Ordenamiento en lenguaje c Benemérita Universidad Autónoma de Puebla Ordenamiento en lenguaje c Martin Raymundo Herrera Medina José Alfredo Vázquez Rosiles Jordany Salazar Aparicio Programación Facultad de ciencias de la electrónica

Algoritmos de ordenación Su finalidad es organizar ciertos datos en un orden creciente o decreciente mediante una regla prefijada. Atendiendo al tipo de elemento que se quiera ordenar puede ser: Ordenación interna: Los datos se encuentran en memoria (ya sean arreglos, listas, etc.), y son de acceso aleatorio o directo. Los métodos de ordenación interna se aplican principalmente a arreglos unidimensionales. Ordenación externa: Los datos están en un dispositivo de almacenamiento externo y su ordenación es más lenta que la interna.

Algoritmos de ordenación interna selección burbuja Inserción directa shell megasort quicksort

selección Este método consiste en buscar el elemento más pequeño del arreglo y ponerlo en primera posición, para esto se compara un elemento con los demás intercambiando posiciones de acuerdo a un criterio. Luego, entre los restantes, se busca el elemento más pequeño y se coloca en segundo lugar, y así sucesivamente hasta colocar el último elemento. Ejemplo: x[0]>x[1] ? Cierto. El 5 pasa a la posición x[1]. Y el 4 pasa a la posición x[0]. 5 4 3 2 X [4] : 1 2 3 4 5 3 2 1 2 3

x[0]>x[2] Cierto. El 4 pasa a la posición x[2] y el 3 a la posición x[0]. x[1] >x[3]. Cierto. El 4 pasa a la posición x[3] y el 3 a x[1]. 2 3 5 4 3 5 4 2 x[0]>x[2] Cierto. El 3 pasa a la posición x[3] y el 2 a la posición x[0]. x[2] >x[3]. Cierto. El 5 pasa a la posición x[3] y el 4 a x[2]. 2 3 4 5 2 5 4 3 Pseudocódigo : Para i=0; i<(tam. del arreglo)-1; i incrementa para j=1; j<tam del arreglo; j incrementa si x[i]>x[j] temporal=x[i]; x[i]=x[j]; x[j]=temporal; fin si; fin para; Ya hemos conseguido acomodar al elemento mas pequeño en su lugar x[1] >x[2]. Cierto. El 5 pasa a la posición x[2] y el 4 a x[1]. 2 4 5 3

Burbuja Consiste en comparar pares de elementos adyacentes e intercambiarlos entre sí hasta que estén todos ordenados. Ejemplo: 4 5 3 2 5 4 3 2 X [4] : x[1]>x[2] cierto. El 5 se cambia a x[2] y el 3 a x[1]. 1 2 3 4 3 5 2 Comparamos pares de elementos: x[0]>x[1] cierto. El 5 se cambia a x[1] y el 4 a x[0]. x[2]>x[3] cierto. El 5 se cambia a x[3] y el 2 a x[2]. 4 3 2 5

Se repite el ciclo hasta tener todos los números en orden. Pseudocódigo n=0; mientras n<tam del arreglo -1 para i=0; i< tam del arreglo-1; i incrementa si x [i] > x [i-1] temporal = x [i]; x [i] = x [i-1]; x [i-1] = temporal; fin si; fin para; n=n+1; fin mientras; x[0]>x[1] cierto. El 4 se cambia a x[1] y el 3 a x[0]. 3 4 2 5 x[1]>x[2] cierto. El 4 se cambia a x[2] y el 2 a x[1]. 3 2 4 5 x[0]>x[1] cierto. El 4 se cambia a x[1] y el 2 a x[0]. 2 3 4 5

Inserción directa Este método consiste en buscar el elemento más pequeño del arreglo y ponerlo en primera posición; luego, entre los restantes, se busca el elemento más pequeño y se coloca en segundo lugar, y así sucesivamente hasta colocar el último elemento.

para i = 1; i < tam del arreglo; i++ temp= x [i]; Pseudocódigo para i = 1; i < tam del arreglo; i++ temp= x [i]; para j = i – 1; j >= 0 && x [ j ] > temp; j - - x [ j +1] = x [ j ]; x [ j ] = temp; fin para;

5 3 2 temp= 3 X[0]>temp .Cierto se intercambian posiciones 3 5 2 temp= 2 X[1]>temp .Cierto se intercambian posiciones 3 2 5 temp= 2 X[0]>temp .Cierto se intercambian posiciones 2 3 5

ORDENAMIENTO SHELL SORT Esta forma de ordenación es muy parecida a la ordenación con burbuja. La diferencia es que usando el método de burbuja se realiza una comparación lineal, y shellsort trabaja con una segmentación entre los datos, acomodándolos en un arreglo unidimensional y subsecuentemente ordenando las columnas. Por lo tanto es un buen método, pero no el mejor para implementarlo en grandes arreglos.  Este proceso se repite cada vez con un arreglo menor, es decir, con menos columnas, en la ultima repetición solo tiene una columna, cada que se realiza el proceso se ordena mas los datos, hasta que en su ultima repetición están completamente ordenados. Sin embargo el numero de operaciones para ordenar en cada repetición esta limitado debido al pre-ordenamiento que se obtuvo en las repeticiones anteriores.

Ejemplo: Algoritmo  ______________________________________… void ShellSort(Lista)//Lista es un vector que contiene los elementos a ser ordenados.  1. Declarar variables enteras: i, j, incremento = 3, temp  2. Repetir mientras incremento > 0:  3. Repetir mientras i sea menor al tamaño de la Lista  4. j = i, temp = Lista[i]  5. Repetir mientras j >= incremento y Lista[j - incremento] > temp  6. Lista[j] = Lista[j - incremento], j = j - incremento 7. [fin de ciclo del paso 5] 8. Lista[j] = temp 9. [fin de ciclo del paso 3]  10. si incremento/2 != 0 entonces: 11. incremento = incremento/2 12. si incremento == 1 entonces: 13. incremento = 0 14. si no, entonces: 15. incremento = 1 16. [fin de ciclo del paso 2] 17. Salir

ORDENACION EXTERNA Es un término genérico para los algoritmos de ordenamiento que pueden manejar grandes cantidades de información. El ordenamiento externo se requiere cuando la información que se tiene que ordenar no cabe en la memoria principal de una computadora (típicamente la RAM) y un tipo de memoria más lenta (típicamente un disco duro) tiene que utilizarse en el proceso. Existen otros tipos de memoria externa que son los usb, de almacenamiento entre otros.

ORDENACION La Ordenación externa de los datos están en un dispositivo de almacenamiento externo (Archivos) y su ordenación es más lenta que la interna. Aquí primero se crea un archivo en notepad o en cualquier editor de texto, después se busca el archivo que ene este caso es “países” en el disco duro con extensión TXT y los muestra en la tabla y lo abrimos como se muestra en el algoritmo.

ORDENACION Aquí se muestra como se puede editar un texto txt, abriéndolo y ordenándolo como se muestra en la figura y algoritmo siguiente.

MERGE Sort (Ordenamiento POR FUSION) Combinación de dos estructuras de datos ordenadas para crear una estructura ordenada de mayor tamaño. Arreglos enteros ordenados: a[1],…, a[M] b[1],…, b[N] Fusionarlos en: c[1],…, c[M+N]

Si la longitud de la lista es 0 ó 1, entonces ya está ordenada Si la longitud de la lista es 0 ó 1, entonces ya está ordenada. En otro caso: Dividir la lista desordenada en dos sublistas de aproximadamente la mitad del tamaño. Ordenar cada sublista recursivamente aplicando el ordenamiento por mezcla. Mezclar las dos sublistas en una sola lista ordenada.

Quick Sort (Ordenamiento Rápido) Es el algoritmo de ordenamiento más eficiente de todos, se basa en la técnica de "Divide y Vencerás", que permite en promedio, ordenar n elementos en un tiempo proporcional a n*log(n).

Algoritmo Fundamental: Elegir un elemento de la lista de elementos a ordenar, al que llamaremos pivote. Resituar los demás elementos de la lista a cada lado del pivote, de manera que a un lado queden todos los menores que él, y al otro los mayores.

La lista queda separada en dos sublistas, una formada por los elementos a la izquierda del pivote, y otra por los elementos a su derecha. Repetir este proceso de forma recursiva para cada sublista mientras éstas contengan más de un elemento. Una vez terminado este proceso todos los elementos estarán ordenados.

Implementación