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

Slides:



Advertisements
Presentaciones similares
Capítulo 2 Algoritmos.
Advertisements

Estructura de Datos Unidad 4. Recursividad Dra. María Lucía Barrón Estrada Enero-Junio 2007.
Ejemplo de un programa en C++ donde se manipulan archivos de datos
Python CI-2200 Programación Avanzada en Sistemas UNIX.
8 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.
6 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.
Complejidad de Algoritmos
Computadoras y programación
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Listas enlazadas c++ Prof. Franklin Cedeño.
ALGORITMOS DE ORDENAMIENTO
Paricial IV Ing. Esmeralda Elizabeth Rodríguez Rodríguez
Ciclos Repetitivos y Vectores en C Sharp
Seminario de Actualización - Excel Avanzado y Macros
Archivos Implementar un método que lea una secuencia de números enteros de un archivo y compute la cantidad de elementos leídos.
ORDENACION POR EL METODO DE LA SACUDIDA (SHAKER SORT)
1.5 Algoritmos, Pseudocódigo y Diagramas de Flujo
Curso de Java Estructura del Lenguaje
Pruebas de programas Java mediante JUnit
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.
6 Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Luis Hernández Yáñez / Pablo Moreno Ger Facultad.
9A9A9A9A 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.
8A8A8A8A 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.

INFORMATICA I Funciones CLASE 13.
MÉTODOS DE CLASIFICACION
CS1101X Programming Methodology
FORTRAN 77 y Cómputo Científico
PROGRAMACION DE ESTRUCTURAS DE DATOS IV. MÉTODOS DE ORDENAMIENTO.
Mergesort como ejemplo de Divide y Vencerás
3 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.
8 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.
ESTRUCTURAS DE SECUENCIA
Estructuras de Datos Manipulación de la Especificación de la Lista en C++
5A5A5A5A Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Luis Hernández Yáñez/Pablo Moreno Ger Facultad.
Método en Java.
4A4A4A4A 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.
FILTROS SISTEMAS OPERATIVOS II Docente: MIGUEL ANGEL NIÑO ANDRES CORREDOR VIDAL ANDRES SANCHEZ DULCE JUAN ANDRES MARTINEZ Sexto semestre de Sistemas de.
Estructuras dinámicas de datos, TAD Lista, parte 2
Ordenación, Clasificación
CORPOCIDES Ing. Emilio Medina Baquero
Grado en Ingeniería electrónica y comunicaciones Facultad de Físicas Universidad Complutense P1 Fundamentos de Programación.
UNIVERSIDAD AUTONOMA METROPOLITANA
4 Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Luis Hernández Yáñez Raquel Hervás Ballesteros Facultad.
4 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.
3.  Recursividad.
Algoritmos para Ordenar datos
Ordenación y Búsquedas1UVM Ordenación y Búsqueda.
Manejo de Vectores y Matirces
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
Capítulo 1 “Elementos de Programación”
COMPUTACION 2009 Clase 6 Clase 7.
CC30A Algoritmos y Estructuras de Datos
Resolución de Problemas y Algoritmos Uso de iteración con secuencias
Estructuras de Datos Dinámicas: Listas Programación I Departamento de Informática Universidad Nacional de San Luis Argentina 2014.
Ordenación y Búsqueda.
Laboratorio Análisis y Diseño de Algoritmos 2 Biblioteca estándar de templates de C++ Standard Template Library (STL)‏ Motivación Ejemplo: Lista + Iterador.
Diseño de Algoritmos. Curso J.L. Leiva O. TEMA3TEMA3 TEMA3TEMA3 Estructuras Dinámicas Contenido del Tema Profesor: José Luis Leiva Olivencia. Despacho:
Quick Sort Estructura de Datos: Métodos de ordenamiento. José Alejandro Leal González Verito no m c tu nombre completo jejeje aquí va!!!
Estructuras de Repetición (Hacer-Mientras)
Símbolos de Programación Estructurada
Ordenamiento por Intercambio Directo
Capitulo 4 Arreglos o Arrays Unidimensionales Bidimensionales Strings
3A3A3A3A 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.
5 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.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
ESTRUCTURAS DE DATOS “Conceptualización de estructuras de datos” Por: Eduardo Robayo.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Transcripción de la presentación:

7A7A7A7A 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 Complutense Fundamentos de la programación

Luis Hernández Yáñez Fundamentos de la programación: Algoritmos de ordenación (Anexo) Ordenación por intercambio744 Mezcla de dos listas ordenadas747

Luis Hernández Yáñez Página 744 Fundamentos de la programación: Algoritmos de ordenación (Anexo)

Luis Hernández Yáñez Algoritmo de ordenación por intercambio Variación del método de selección directa Se intercambia el elemento de la posición que se trata en cada momento siempre que se encuentra uno que es menor: Página 745 Fundamentos de la programación: Algoritmos de ordenación (Anexo)

Luis Hernández Yáñez const int N = 10; typedef int tLista[N]; tLista lista;... for (int i = 0; i < N - 1; i++) { // Desde el primer elemento hasta el penúltimo for (int j = i + 1; j < N; j++) { for (int j = i + 1; j < N; j++) { // Desde i+1 hasta el final // Desde i+1 hasta el final if (lista[j] < lista[i]) { if (lista[j] < lista[i]) { int tmp; int tmp; tmp = lista[i]; tmp = lista[i]; lista[i] = lista[j]; lista[i] = lista[j]; lista[j] = tmp; lista[j] = tmp; } }} Igual número de comparaciones, muchos más intercambios No es estable Página 746 Fundamentos de la programación: Algoritmos de ordenación (Anexo) intercambio.cppintercambio.cpp

Luis Hernández Yáñez Página 747 Fundamentos de la programación: Algoritmos de ordenación (Anexo)

Luis Hernández Yáñez Mezcla de dos listas ordenadas en arrays const int N = 100; typedef struct { int elementos[N]; int elementos[N]; int cont; int cont; } tLista; Un índice para cada lista, inicializados a 0 (principio de las listas) Mientras que no lleguemos al final de alguna de las dos listas: Elegimos el elemento menor de los que tienen los índices Lo copiamos en la lista resultado y avanzamos su índice una posición Copiamos en la lista resultado los que queden en la lista no acabada Página 748 Fundamentos de la programación: Algoritmos de ordenación (Anexo)

Luis Hernández Yáñez void mezcla(tLista lista1, tLista lista2, tLista &listaM) { int pos1 = 0, pos2 = 0; int pos1 = 0, pos2 = 0; listaM.cont = 0; listaM.cont = 0; while ((pos1 < lista1.cont) && (pos2 < lista2.cont) while ((pos1 < lista1.cont) && (pos2 < lista2.cont) && (listaM.cont < N)) { && (listaM.cont < N)) { if (lista1.elementos[pos1] < lista2.elementos[pos2]) { if (lista1.elementos[pos1] < lista2.elementos[pos2]) { listaM.elementos[listaM.cont] = lista1.elementos[pos1]; listaM.elementos[listaM.cont] = lista1.elementos[pos1]; pos1++; pos1++; } else { else { listaM.elementos[listaM.cont] = lista2.elementos[pos2]; listaM.elementos[listaM.cont] = lista2.elementos[pos2]; pos2++; pos2++; } listaM.cont++; listaM.cont++; } Página 749 Fundamentos de la programación: Algoritmos de ordenación (Anexo)

Luis Hernández Yáñez // Pueden quedar datos en alguna de las listas // Pueden quedar datos en alguna de las listas if (pos1 < lista1.cont) { if (pos1 < lista1.cont) { while ((pos1 < lista1.cont) && (listaM.cont < N)) { while ((pos1 < lista1.cont) && (listaM.cont < N)) { listaM.elementos[listaM.cont] = lista1.elementos[pos1]; listaM.elementos[listaM.cont] = lista1.elementos[pos1]; pos1++; pos1++; listaM.cont++; listaM.cont++; } } else { // pos2 < lista2.cont else { // pos2 < lista2.cont while ((pos2 < lista2.cont) && (listaM.cont < N)) { while ((pos2 < lista2.cont) && (listaM.cont < N)) { listaM.elementos[listaM.cont] = lista2.elementos[pos2]; listaM.elementos[listaM.cont] = lista2.elementos[pos2]; pos2++; pos2++; listaM.cont++; listaM.cont++; } }} Página 750 Fundamentos de la programación: Algoritmos de ordenación (Anexo) mezcla1.cppmezcla1.cpp

Luis Hernández Yáñez Mezcla de dos listas ordenadas en archivos void mezcla(string nombre1, string nombre2, string nombreM) { // Mezcla las secuencias en los archivos nombnre1 y nombre2 // generando la secuencia mezclada en el archivo nombreM ifstream archivo1, archivo2; ifstream archivo1, archivo2; ofstream mezcla; ofstream mezcla; int dato1, dato2; int dato1, dato2; // Los archivos existen y son correctos // Los archivos existen y son correctos archivo1.open(nombre1.c_str()); archivo1.open(nombre1.c_str()); archivo2.open(nombre2.c_str()); archivo2.open(nombre2.c_str()); mezcla.open(nombreM.c_str()); mezcla.open(nombreM.c_str()); archivo1 >> dato1; archivo1 >> dato1; archivo2 >> dato2; archivo2 >> dato2; while ((dato1 != -1) && (dato2 != -1)) { while ((dato1 != -1) && (dato2 != -1)) { // Mientras quede algo en ambos archivos // Mientras quede algo en ambos archivos Página 751 Fundamentos de la programación: Algoritmos de ordenación (Anexo)

Luis Hernández Yáñez if (dato1 < dato2) { if (dato1 < dato2) { mezcla << dato1 << endl; mezcla << dato1 << endl; archivo1 >> dato1; archivo1 >> dato1; } else { } else { mezcla << dato2 << endl; mezcla << dato2 << endl; archivo2 >> dato2; archivo2 >> dato2; } } // Uno de los dos archivos se ha acabado } // Uno de los dos archivos se ha acabado if (dato1 != -1) { // Quedan en el primer archivo if (dato1 != -1) { // Quedan en el primer archivo while (dato1 != -1) { while (dato1 != -1) { mezcla << dato1 << endl; mezcla << dato1 << endl; archivo1 >> dato1; archivo1 >> dato1; } } else { // Quedan en el segundo archivo else { // Quedan en el segundo archivo while (dato2 != -1) { while (dato2 != -1) { mezcla << dato2 << endl; mezcla << dato2 << endl; archivo2 >> dato2; archivo2 >> dato2; } } Página 752 Fundamentos de la programación: Algoritmos de ordenación (Anexo)

Luis Hernández Yáñez archivo2.close(); archivo2.close(); archivo1.close(); archivo1.close(); mezcla << -1 << endl; mezcla << -1 << endl; mezcla.close(); mezcla.close();} Página 753 Fundamentos de la programación: Algoritmos de ordenación (Anexo) mezcla2.cppmezcla2.cpp

Luis Hernández Yáñez Licencia CC (Creative Commons) Creative CommonsCreative Commons Este tipo de licencias ofrecen algunos derechos a terceras personas bajo ciertas condiciones. Este documento tiene establecidas las siguientes: Pulsa en la imagen de arriba a la derecha para saber más. Fundamentos de la programación: Algoritmos de ordenación (Anexo) Página 754 Reconocimiento (Attribution): En cualquier explotación de la obra autorizada por la licencia hará falta reconocer la autoría. No comercial (Non commercial): La explotación de la obra queda limitada a usos no comerciales. Compartir igual (Share alike): La explotación autorizada incluye la creación de obras derivadas siempre que mantengan la misma licencia al ser divulgadas.