PROGRAMACIÓN ESTRUCTURADA

Documentos relacionados
Capítulo 3 Ordenación(Clasificación) y Búsqueda

<tipo> Tipo de dato de los elementos del vector

Tema: Métodos de Ordenamiento. Parte 1.

Algoritmos de Ordenamiento

Complejidad de Algoritmos

CAPÍTULO 10 ALGORITMOS DE ORDENACIÓN Y BÚSQUEDA Búsqueda en listas Resumen Ejercicios Problemas

ALGORITMOS DE ORDENACIÓN Y BÚSQUEDA

PRÁCTICA ALGORÍTMICA: EJERCICIOS PROPUESTOS

Algoritmos sobre secuencias y conjuntos de datos

Algoritmos y Programación Clase 8

Tema 2. Recursividad. Fundamentos de Programación II. Luís Rodríguez Baena

Sorting++ Herman Schinca. Clase de Junio de 2011

Algoritmos: Algoritmos sobre secuencias y conjuntos de datos

ARREGLOS DEFINICION GENERAL DE ARREGLO

: Algorítmica y Estructura de Datos I

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO. Introducción FACULTAD DE INGENIERÍA. Ordenación

Notación Asintótica 2

Práctica 4 El algoritmo QuickSort, comparación de algoritmos de ordenación

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

Curso: POBLACIÓN Y DESARROLLO Conferencia 4

Diseño Estructurado de Algoritmos

Fundamentos de Programación Visual Basic

SISTEMAS DE ECUACIONES LINEALES Y MATRICES Dos ecuaciones lineales con dos

UNIVERSIDAD NACIONAL DE INGENIERÍA CENTRO DE EXTENSIÓN Y PROYECCIÓN SOCIAL

Tema 2 Introducción a la Programación en C.

MANUAL DE PRÁCTICAS DEL TALLER DE PROGRAMACIÒN PRACTICA NO.6

Exterior del algoritmo. Entorno. Usuario. Procesador. Escribir. v1 v2 v3. Leer. <acción> {; <acción>}

7.4. UTILIDADES DE LAS PILAS

La eficiencia de los programas

Guía del estudiante. Clase 16 Tema: Números racionales - orden en los racionales y representación decimal. Lectura. Colombia Biodiversa Amenazada

Introducción al tipo Vector Cómo guardar una colección de datos conceptualmente relacionados? - almacenar los 100 primeros números primos, - al

Estructuras de control

Fundamentos de Programación. Flujo de Control I: Estructuras selectivas

lasmatemáticas.eu Pedro Castro Ortega materiales de matemáticas

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Programación de Sistemas

Estructura Selectiva Múltiple

Manejo de módulos y recursión en programación. Pseudocódigo. (CU00204A)

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

Con miras a conocer la metodología que se aplica en el Método SIMPLEX, tenemos a continiacion un ejemplo:

Práctica 2 Métodos de búsqueda para funciones de una variable

Problemas de Recursividad

CAPÍTULO 7 ALGORITMOS Y SU COMPLEJIDAD

Capítulo 2 ORDENACIÓN

Sistemas de ecuaciones lineales

Estructuras de control

ANEXO 1. CALIBRADO DE LOS SENSORES.

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

ANÁLISIS COMBINATORIO

ELABORAR Y COMPARAR PROCEDIMIENTOS DE CÁLCULO MENTAL

Conjuntos disjuntos (Relaciones de equivalencia)

Matemáticas Discretas. Oscar Bedoya

Materia: Matemática de Séptimo Tema: Las Fracciones y los Decimales

UNIDAD III NÚMEROS FRACCIONARIOS

FUNCIONES EXPONENCIALES Y LOGARÍTMICAS

PROBLEMA 1. Considere el siguiente problema de programación lineal:

Profesor(a): M. A. Zeferino Galarza Hernández

DES: Programa(s) Educativo(s): Tipo de materia: Clave de la materia: Semestre: Área en plan de estudios:

Introducción a la programación

Pruebas de Acceso a las Universidades de Castilla y León

FICHAS DE ESTUDIO No.1. Definición del conjunto N NOMBRE FECHA

Analisis de algoritmos

Algebra lineal y conjuntos convexos

CPU MEMORIAS CACHE. Memorias caché. Memoria caché = memoria de tamaño pequeño y acceso rápido situada entre la CPU y la memoria principal.

Estructuras Repetitivas

DIAGRAMAS DE FLUJOS. Qué son Los Diagramas de Flujo y Para qué se Usan?

PROGRAMACIÓN. UNIDAD II. ALGORITMO PROFA : HAU MOY

Estructuras de Control

OPTIMIZACIÓN VECTORIAL

6.1.- Introducción a las estructuras de datos Tipos de datos Arrays unidimensionales: los vectores Operaciones con vectores.

Algoritmos. Diseño de algoritmos por inducción. Alberto Valderruten. Dept. de Computación, Universidade da Coruña

Herramientas de Programación. M.C. Juan Carlos Olivares Rojas

Algorítmica y Lenguajes de Programación. Ordenación (i)

ESTRUCTURAS ALGORITMICAS

ESTADÍSTICA DESCRIPTIVA

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

Técnicas de conteo. Permutaciones y combinaciones. Álvaro José Flórez. Febrero - Junio Facultad de Ingenierías

UNIDAD 1: NÚMEROS NATURALES OBJETIVOS

2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIFICADORES COMO LOCALIDADES DE MEMORIA

Algoritmos y programas. Algoritmos y Estructuras de Datos I

SISTEMAS DE NUMERACION

TEMA 2 METODOLOGÍA DE LA PROGRAMACIÓN

UNIDAD III: APLICACIONES ADICIONALES DE LA DERIVADA

4. ANÁLISIS DE FUNCIONES DE UNA VARIABLE

Resolución de Problemas y Algoritmos Clase 6: Repetición (continuación)

3.1. Administración de la medición y de la información estratégica:

Audio ::: Primeros pasos con Audacity Diseño de materiales multimedia. Web Primeros pasos con Audacity

RELACIÓN DE PROBLEMAS DE CLASE DE PROGRAMACIÓN LINEAL ENTERA

Sistemas de Ecuaciones Lineales

Estándares de Contenido y Desempeño, Estándares de Ejecución y Niveles de Logro Marcado* MATEMÁTICA

Capítulo1. Estructuras Fundamentales de Datos

Normalmente usamos la palabra "combinación" descuidadamente, sin pensar en si el orden de las cosas es importante. En otras palabras:

Tema 4: Probabilidad y Teoría de Muestras

envisionmath Texas 2.0 en español Grade

Transcripción:

Universidad Nacional de Jujuy PROGRAMACIÓN ESTRUCTURADA Trabajo Práctico Nº 11 Tema: Operaciones sobre Arreglos. Ordenación. Apellido y Nombre: Fecha: / / Conceptos Teóricos ORDENACIÓN DE ARREGLOS Los métodos más usuales de ordenación de arreglos son: Burbuja o Intercambio Selección Inserción Shell Rápido (Quicksort) A continuación se describen los métodos estos métodos. Método de Burbuja o Intercambio El algoritmo de intercambio o burbuja se basa en comparar pares de elementos adyacentes e intercambiarlos entre sí hasta que estén todos ordenados. Por ejemplo, si se considera el siguiente vector Los pasos a dar son: 1. Comparar elemento[1] y elemento[2]; si están en orden, se mantienen como están; en caso contrario, se intercambian entre sí. 2. A continuación se comparan los elementos 2 y 3; de nuevo se intercambian si es necesario. 3. El proceso continúa hasta que cada elemento del vector ha sido comparado con sus adyacentes y se han realizado los intercambios necesarios. En la siguiente tabla se muestra el comportamiento del algoritmo de ordenación burbuja (en cada paso se destacan los valores que se van comparando), la última línea de la tabla presenta los valores del vector ordenados. 2.30 1.44 5.90 3.11 0.32 2.30 1.44 3.11 5.90 0.32 2.30 1.44 3.11 0.32 5.90 1.44 2.30 3.11 0.32 5.90 1.44 2.30 3.11 0.32 5.90 1.44 2.30 0.32 3.11 5.90 1.44 2.30 0.32 3.11 5.90 1.44 2.30 0.32 3.11 5.90 1.44 0.32 2.30 3.11 5.90 1.44 0.32 2.30 3.11 5.90 1.44 0.32 2.30 3.11 5.90 El algoritmo de ordenación burbuja se presenta a continuación (el procedimiento cambio realiza el intercambio de valores entre los parámetros x, y que recibe): procedimiento cambio(e/s x:entero, E/S y:entero) aux:entero aux x x y y aux Año 2012 Pág. 1 de 6

Método de Ordenación por Selección procedimiento burbuja(e/s a:vector,e ocup:entero) j:entero bandera:lógico bandera VERDADERO mientras bandera hacer bandera FALSO para j desde 1 hasta ocup-1 hasta si a[j]>a[j+1] entonces cambio(a[j],a[j+1]) bandera VERDADERO El algoritmo de ordenación por selección se basa en buscar el elemento menor del arreglo y colocarlo en primera posición. Luego se busca el segundo elemento más pequeño y se coloca en la segunda posición, y así sucesivamente. Por ejemplo, si se considera el siguiente vector Los pasos sucesivos a dar son: 1. Seleccionar el elemento menor del arreglo de n elementos. 2. Intercambiar dicho elemento con el primero. 3. Repetir estas operaciones con los n-1 elementos restantes, seleccionando el segundo elemento; continuar con los n-2 elementos restantes hasta que sólo quede el mayor. En la siguiente tabla se muestra el comportamiento del algoritmo de ordenación por selección (en cada paso se destacan los valores que se van comparando), la última línea de la tabla presenta los valores del vector ordenados. 1.44 5.90 2.30 3.11 0.32 1.44 5.90 2.30 3.11 0.32 0.32 5.90 2.30 3.11 1.44 0.32 2.30 5.90 3.11 1.44 0.32 2.30 5.90 3.11 1.44 0.32 1.44 5.90 3.11 2.30 0.32 1.44 3.11 5.90 2.30 0.32 1.44 2.30 5.90 3.11 El algoritmo de ordenación por selección se presenta a continuación (el procedimiento cambio realiza el intercambio de valores entre los parámetros x, y que recibe): Método de Ordenación por Inserción procedimiento seleccion(e/s a:vector,e ocup:entero) i,j:entero para i desde 1 hasta ocup-1 hacer para j desde i+1 hasta ocup hacer si a[i]>a[j] entonces cambio(a[i],a[j]) _para _para El algoritmo de ordenación por inserción ordena un vector insertando cada elemento[i] entre los i-1 Año 2012 Pág. 2 de 6

anteriores que ya están ordenados. Para realizar esto comienza a partir del segundo elemento, suponiendo que el primero ya está ordenado. Si los 2 primeros elementos están desordenados, los intercambia. Luego, toma el tercer elemento y busca su posición correcta con respecto a los dos primeros. En general, para el elemento i, busca su posición con respecto a los i-1 elementos anteriores y de ser necesario lo inserta adecuadamente. vector: En la siguiente tabla se muestra el comportamiento del algoritmo de ordenación por inserción para el i j aux a[j] 2 1 5.90 2.30 3 2 1.44 5.90 5.90 1 2.30 2.30 0 1.44 1.44 2.30 5.90 3.11 0.32 4 3 3.11 5.90 5.90 2 2.30 3.11 1.44 2.30 3.11 5.90 0.32 5 4 0.32 5.90 5.90 3 3.11 3.11 2 2.30 2.30 1 1.44 1.44 0 0.32 El algoritmo de ordenación por inserción se presenta a continuación: Método de Ordenación Shell procedimento insercion(e/s a:vector,e ocup:entero) i,j,aux:entero para i desde 2 hasta ocup hacer aux a[i] j i-1 mientras (j>=1) Y (a[j]>aux) hacer a[j+1] a[j]; j j-1 a[j+1] aux _para El algoritmo de ordenación Shell (o también llamado de inserción con incrementos decrecientes) es una mejora del método de inserción. En este método se realizan comparaciones por saltos constantes (mayores a 1) con lo que se consigue una ordenación más rápida. La ordenación Shell se basa en tomar como salto N/2 (N elementos del arreglo) y luego el salto se va reduciendo a la mitad en cada repetición hasta que vale 1. En la siguiente tabla se muestra el comportamiento del algoritmo de ordenación Shell para el vector: 18 11 27 13 9 4 16 Elemento 6 Elemento 7 Salto i j K Elemento 6 Elemento 7 3 4 1 4 18 11 27 13 9 4 16-2 13 11 27 18 9 4 16 5 2 5 13 11 27 18 9 4 16 Año 2012 Pág. 3 de 6

Salto i j K Elemento 6 Elemento 7-1 13 9 27 18 11 4 16 6 3 6 13 9 27 18 11 4 16 0 13 9 4 18 11 27 16 7 4 7 13 9 4 18 11 27 16 1 4 13 9 4 16 11 27 18 0 13 9 4 16 11 27 18 1 2 1 2 13 9 4 16 11 27 18 0 9 13 4 16 11 27 18 3 2 3 9 13 4 16 11 27 18 1 2 9 4 13 16 11 27 18 0 4 9 13 16 11 27 18 4 3 4 4 9 13 16 11 27 18 0 4 9 13 16 11 27 18 5 4 5 4 9 13 16 11 27 18 3 4 4 9 13 11 16 27 18 0 4 9 11 13 16 27 18 6 5 6 4 9 11 13 16 27 18 0 4 9 11 13 16 27 18 7 6 7 4 9 11 13 16 27 18 5 6 4 9 11 13 16 18 27 0 4 9 11 13 16 18 27 El algoritmo de ordenación Shell se presenta a continuación: Método de Ordenación Rápido (Quicksort) procedimiento shell(e/s a:vector,e ocup:entero) i,j,k,salto:entero salto ocup div 2 mientras salto > 0 hacer para i desde (salto+1) hasta ocup hacer j i-salto mientras j>0 hacer k j+salto si a[j]<=a[k] entonces j 0 sino cambio(a[j],a[k]) j j-salto _para salto salto div 2 El algoritmo de ordenación Rápido permite ordenar una lista basándose en el hecho de que es más fácil ordenar 2 listas pequeñas que una lista grande. El método divide al arreglo en 2 sublistas, una con todos los valores menores o iguales a un cierto valor específico y otra con todos los valores mayores que ese valor. El valor elegido puede ser cualquier valor arbitrario del vector. A este valor se lo denomina pivote. En la siguiente tabla se muestra el comportamiento del algoritmo de ordenación Rápido para el vector: 18 11 27 13 9 4 16 Elemento 6 Elemento 7 Pivote izq der i j Elemento 6 Elemento 7 13 1 7 1 6 18 11 27 13 9 4 16 3 5 4 11 27 13 9 18 16 4 4 4 11 9 13 27 18 16 5 3 11/18 1/5 3/7 1/5 3/7 4 11 9 13 27 18 16 2/6 /6 4 9 11 13 16 18 27 Año 2012 Pág. 4 de 6

Pivote izq der i j Elemento 6 Elemento 7 3/7 2/5 - - - - - 4 9 11 13 16 18 27 El algoritmo de ordenación Rápido se presenta a continuación: Ejercicios a Resolver procedimiento rapido(e/s a:vector,e izq:integer,e der:integer) i,j,pivote:entero i izq j der pivote a[(izq+der) div 2] mientras i<= j hacer mientras a[i]<pivote hacer i i+1; mientras a[j]>pivote hacer j j-1 si i<= j entonces cambio(a[i],a[j]); i i+1; j j-1; si izq < j entonces rapido(a,izq,j) si i < der entonces rapido(a,i,der) 1. Realice la prueba de escritorio del algoritmo de ordenación burbuja para el siguiente vector (utilice la tabla adjunta): 40 15 58 21 17 bandera j j+1 a[j]> a[j+1] 40 15 58 21 17.. 2. Dado los siguientes vectores, muestre gráficamente el comportamiento del algoritmo de ordenación burbuja. 51 12 3 17 35 9 14 37 8 2 18 67 37 61 0 1 4 3 15 22 1 3 10 7 3. Realice la prueba de escritorio del algoritmo de ordenación por selección para el siguiente vector (utilice la tabla adjunta): 21 61 29 10 17 i j a[i]>a[j+1] 21 61 29 10 17 Año 2012 Pág. 5 de 6

4. Dado los siguientes vectores, muestre gráficamente el comportamiento del algoritmo de ordenación por selección. 2 52 49 41 45 4 1 27 46 50 18 14 62 7 26 14 79 1 40 47 4 50 7 2 5. Realice la prueba de escritorio del algoritmo de ordenación por inserción para el siguiente vector (utilice la tabla adjunta): 37 22 13 30 17 I aux j j>=1 Y a[j]>aux 37 22 13 30 17 6. Dado los siguientes vectores, muestre gráficamente el comportamiento del algoritmo de ordenación por inserción. 3 12 10 20 37 9 2 62 63 67 35 31 3 27 43 13 11 5 36 90 46 0 30 60 7. Analice las siguientes secuencias de ordenación y determine a qué algoritmos corresponden: Vector Original 10 46 11 18 1 3 Vector Original 59 85 52 76 5 24 Paso 1 10 46 11 18 1 3 Paso 1 59 52 76 5 24 85 Paso 2 10 11 46 18 1 3 Paso 2 52 59 5 24 76 85 Paso 3 10 11 18 46 1 3 Paso 3 52 5 24 59 76 85 Paso 4 1 10 11 18 46 3 Paso 4 5 24 52 59 76 85 Paso 5 1 3 10 11 18 46 8. Modifique los algoritmos de ordenación Burbuja, Selección e Inserción para que la disposición de elementos se realice en forma decreciente. 9. Implemente el algoritmo de ordenación Burbuja utilizando estructuras REPETIR (para todos los bucles) y el algoritmo de Selección utilizando estructuras MIENTRAS (para todos los bucles). 10. Modifique el algoritmo de Selección de modo que la ordenación se realice a partir de la última posición del arreglo. Año 2012 Pág. 6 de 6