Métodos de ordenamiento:

Documentos relacionados
Métodos de ordenamiento:

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas

Métodos de ordenamiento y búsqueda en vectores

Este método se basa en buscar el elemento menor el vector y colocarlo en la primera

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero

TEMA 7. ALGORITMOS DE BÚSQUEDA, ORDENACIÓN

Métodos de Ordenamiento. Unidad VI: Estructura de datos

Métodos de ordenamiento y búsqueda para datos en memoria principal

Métodos de ordenamiento y búsqueda para datos en memoria principal

CAPITULO II ORDENAMIENTO Y BUSQUEDA. Ivan Medrano Valencia

Algoritmos de Ordenación

ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS

Apunte de cátedra: Ordenación de Arreglos

Métodos de Ordenamiento

PROGRAMACIÓN ESTRUCTURADA

Estructuras de Datos y Algoritmos

Tema 2.- Ordenación (Parte I)

Porque usar Arreglos?

Programación I (Plan 1999) Algoritmos y Estructuras de Datos II (Plan 2009) Mgter. Oscar Adolfo Vallejos FaCENA - UNNE

<tipo> Tipo de dato de los elementos del vector

23. Ordenación de vectores (tablas) Diego Gutiérrez

Unidad 4. Arreglos y Cadenas

Algoritmos sobre Listas

Algoritmos Iterativos de Búsqueda y Ordenación y sus tiempos

Ordenamiento y Búsqueda

Francisco J. Hernández López

Tema 6. Estructuras de Datos Estáticas

Capítulo. Algoritmos de ordenación y búsqueda. Contenido. Introducción

11-Ordenar Definiciones 11.2 Selección 11.3 Intercambio 11.4 Inserción 11.5 Shellsort 11.6 Quicksort 11.7 Mergesort.

Tema 1. ORDENACIÓN, BÚSQUEDA E INTERCALACIÓN INTERNA (Algoritmos)

Objetivos. Conocer y saber utilizar diferentes tipos de datos. estructurados: cómo se definen. cómo están organizadas sus componentes

Guía práctica de estudio 4 Algoritmos de búsqueda parte 1

5 Métodos de Ordenamiento. 5.1 Métodos de Ordenamiento Internos Burbuja Quicksort Heapsort Inserción Simple 5.1.

Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica

8. Vectores (arrays)

Introducción Supongamos un subconjunto de n elementos X = {e 1,,e n de un conjunto referencial Y, X Y. Dentro de Y se define una relación de orden tot

Tema: Métodos de Ordenamiento. Parte 1.

ESTRUCTURA DE DATOS: Tema 5. Ordenamiento y Búsqueda

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

Estructuras de Datos II

7.1 Consideraciones. Considere la búsqueda de un libro en una biblioteca. Considere la búsqueda de un nombre en el directorio telefónico.

Algorítmica y Complejidad. Tema 3 Ordenación.

Análisis de algoritmos

Colas de prioridad. Capítulo Operaciones Relaciones entre el número de nodos y la altura en árboles binarios.

Examen de Estructuras de Datos y Algoritmos. (Modelo 2)

Examen de Estructuras de Datos y Algoritmos. (Modelo 1)

Ordenamiento (Sorting)

10. Algoritmos de ordenación

Algoritmos de Búsqueda y Ordenamiento

Arreglos. Algoritmos y Estructuras de Datos I. Arreglos en C++ Arreglos y listas

Tema 3. Análisis de costes

Tema 6. Ordenación, búsqueda e intercalación interna

ELO320 Estructuras de Datos y Algoritmos. Heap & HeapSort. Tomás Arredondo Vidal

2. Con una lista ordenada, aunque la localización y eliminación es rápida el problema es en la inserción de datos pues puede ser del orden de O(n).

Bloque 1. Conceptos y técnicas básicas en programación

Estructuras de Datos y Algoritmos Tema 3: Arrays y listas enlazadas

Unidad 5. Arreglos: Vectores y Matrices. Prof. Eliana Guzmán U.

Fundamentos de la programación

Vectores y Matrices. Dept. Ciencias de la Computación e I.A. Universidad de Granada

NOTAS(1) NOTAS(2)... NOTAS(I)... NOTAS(N)

Algoritmos de Ordenamiento

Práctica 1 Arreglos n-dimensionales y operaciones con bits PRÁCTICA I

Curso de Programación 1

Decrementa y vencerás

Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010

Notación Asintótica 2

Tema: Métodos de Ordenamiento. Parte 1.

CAPÍTULO 3 ESTRUCTURAS DE DATOS ESTÁTICAS

Análisis de algoritmos

Esquema de Dividir y Vencer

Unidad 5: Estructuras Estáticas I: Tablas 1 Unidad 5 ESTRUCTURAS ESTÁTICAS I: Tablas Desarrollo de la unidad : 36 h

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:

Estructura de datos y Algoritmos. Tema III Clasificación en memoria secundaria

Decrementa y vencerás II

Algorítmica y Lenguajes de Programación. Búsqueda

Árboles. Árboles. Árboles binarios de búsqueda. Árboles. Inserción en un árbol. Árbol binario de búsqueda

TAD CONJUNTOS Y MULTICONJUNTOS

Programación de Sistemas

INTRODUCCIÓN AL ESTUDIO DE ALGORITMOS Y SU COMPLEJIDAD

Algoritmos y Programación Clase 8

Estructura de datos y de la información Boletín de problemas - Tema 10

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos

Lectura complementaria: El método de ordenamiento de datos conocido como la burbuja.

Eduardo Mosqueira Rey Bertha Guijarro Berdiñas Mariano Cabrero Canosa

Algoritmos y Estructura de Datos I

ARBOLES B. Lo que si es cierto es que la letra B no significa "binario", ya que:

3 Métodos de Ordenamiento

Colas con prioridad, montículos y el heapsort. Lección 18

Lecturas 7 y 8. Capítulo Ordenamiento

Árbol ABB equilibrado. Lección: Árboles. Algorítmica II (Tema 4) Lenguajes y Sistemas Informáticos, Universidad Pablo de Olavide 1/ 58

EDA. Tema 8 Colas de Prioridad: Heaps

En las preguntas 1-30 indique la respuesta correcta. e= ninguna de las anteriores

PROGRAMACIÓN ESTRUCTURADA

UNIDAD 8 Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros.

Tema 4- Representación Enlazada

INFORMATICA II PRIMER PARCIAL

Algoritmos de Ordenamiento

Búsqueda y ordenamiento

Transcripción:

Métodos de ordenamiento: 0) Intercambio: a) Idea: El algoritmo de intercambio aunque es el más sencillo de implementar es uno de los más ineficientes en rendimiento. Se basa en la idea de buscar cada vez el menor elemento del vector y ubicarlo al principio del mismo, repitiendo este proceso cada vez con el vector sin su primer elemento (el menor del vector), hasta llegar a un vector de un solo elemento que por definición ya está ordenado. b) Ejemplo:

c) Algoritmo: En cada paso del algoritmo se compara el i/esimo elemento del vector a, con los demás elementos a[j] (j=i+1.. n) y cuando a[i] es mayor que a[j], se intercambian sus valores. Cuando se termina de recorrer el arreglo el proceso nos garantiza que en a[i] es el menor elemento del vector.

Desde i = 0 hasta (<) n-1 Desde j = i+1 hasta (<) n Si a[i] > a[j] luego intercambiar d) Eficiencia: Teniendo en cuenta que el algoritmo de ordenamiento por intercambio se realiza siempre de la misma manera independiente de los datos que estén almacenados, no existe un mejor, peor o caso promedio y su complejidad siempre será O(n 2 ). 1) Burbuja: a) Idea: La idea básica del ordenamiento de la burbuja es recorrer el conjunto de elementos en forma secuencial varias veces. Cada paso compara un elemento del conjunto con su sucesor (v[j] con v[j+1]), e intercambia los dos elementos si no están en el orden adecuado, llevando el mayor hacia abajo o al final de la lista. b) Ejemplo: n=6 elementos, ubicados en los índices 0 a 5 Tomemos como ejemplo los números: "9 6 5 8 2 1", que serán ordenados de menor a mayor. Primera vuelta: (i=0) v[0]? v[1] : ( 9 6 5 8 2 1 ) ( 6 9 5 8 2 1 ), el algoritmo compara los primeros dos elementos y los cambia porque 9 > 6 v[1]? v[2] : ( 6 9 5 8 2 1 ) v[2]? v[3] : ( 6 5 9 8 2 1 ) v[3]? v[4] : ( 6 5 8 9 2 1 ) v[4]? v[5] : ( 6 5 8 2 9 1 ) ( 6 5 9 8 2 1 ) los intercambia ( 6 5 8 9 2 1 ) los intercambia ( 6 5 8 2 9 1 ) los intercambia ( 6 5 8 2 1 9 ) el 9 está en su posición correcta v[j]? v[j+1] : (j=0,1,2,3,4) (observar hasta 4!) (j < 6-(0+1)) (j < 5)

Segunda vuelta: (i=1) v[0]? v[1] : ( 6 5 8 2 1 9 ) v[1]? v[2] : ( 5 6 8 2 1 9 ) ( 5 6 8 2 1 9 ) los intercambia ( 5 6 8 2 1 9 ), como estos elementos ya están en orden, el algoritmo no hace cambios. v[2]? v[3] : ( 5 6 8 2 1 9 ) v[3]? v[4] : ( 5 6 2 8 1 9 ) ( 5 6 2 8 1 9 ) los intercambia ( 5 6 2 1 8 9 ) el 8 ya está en su posición correcta v[j]? v[j+1] : (j=0,1,2,3) (observar hasta 3!) (j < 6-(1+1)) (j < 4) Tercera vuelta: (i=2) v[0]? v[1] :( 5 6 2 1 8 9 ) v[1]? v[2] ( 5 6 2 1 8 9 ) v[2]? v[3] ( 5 2 6 1 8 9 ) ( 5 6 2 1 8 9 ) no los intercambia ( 5 2 6 1 8 9 ) los intercambia ( 5 2 1 6 8 9 ) el 6 ya está en su posición correcta v[j]? v[j+1] : (j=0,1,2,3) (observar hasta 2!) (j < 6-(2+1)) (j < 3) Cuarta vuelta: (i=3) v[0]? v[1] :( 5 2 1 6 8 9 ) v[1]? v[2] ( 2 5 1 6 8 9 ) ( 2 5 1 6 8 9 ) los intercambia ( 2 1 5 6 8 9 ) el 5 ya está en su posición correcta v[j]? v[j+1] : (j=0,1) (observar hasta 1!) (j < 6-(3+1)) (j < 2)

Quinta vuelta: (i=4) v[0]? v[1] :( 2 1 5 6 8 9 ) ( 1 2 5 6 8 9 ) el 2 ya está en su posición correcta v[j]? v[j+1] : (j=0) (observar hasta 0!) (j < 6-(4+1)) (j < 1) Sexta vuelta: (i=5) ( 1 2 5 6 8 9 ) el 1 quedó en su posición correcta. No compara elementos porque (j=0, hasta -1!) (j < 6-(5+1)) (j < 0) FIN del proceso c) Algoritmo Desde i=0 hasta i<n Desde (j=0; j<n-(i+1) Si v[i] > v[j] luego intercambiar d) Eficiencia: Existen n-1 pasos y n-i comprobaciones en cada paso, aunque es mejor que el algoritmo de ordenamiento por intercambio. En el peor de los casos cuando los elementos están en el orden inverso, el número máximo de recorridos es n-1 y el número de intercambios o comparaciones está dado por (n-1) * (n-1) = n² - 2n + 1. La complejidad del algoritmo de la burbuja es O(n²) en el peor de los casos.

2) Por Selección: a) Idea: En cada paso, i, coloco en la posición i el menor elemento entre i y N. Para seleccionarlo busco el mínimo. Pasos: Buscar el mínimo elemento de la lista Intercambiarlo con el primero Buscar el siguiente mínimo en el resto de la lista Intercambiarlo con el Segundo, y así sucesivamente Y en general: Buscar el mínimo elemento entre una posición i y el final de la lista Intercambiar ese mínimo con el elemento de la posición i b) Ejemplo:

c) Algoritmo for(i=0 ; i<n-1 ; i++) ban=0; min=i;//min es la posición del menor, comienzo con menor = primer elemento de la lista for(j=i+1 ; j<n ; j++) //Esta es la sublista. if (v[min] > v[j]) min=j;//min ahora tiene la posición del elemento menor de la sublista ban=1;//seteamos ban a 1 para que efectue el intercambio dentro de la sublista if(ban)

aux=v[min]; v[min]=v[i]; v[i]=aux; d) Eficiencia: O(n 2 ) 3) Por Inserción: a) Idea: El ordenamiento empieza por la izquierda del array y va trabajando hacia su derecha. Aquí no selecciona el elemento más pequeño para hacer el intercambio, lo que hace es trasladar(inserta) hacia la izquierda cada elemento más pequeño que va encontrando en su camino. Este ordenamiento parte la lista en dos secciones; la mitad ordenada y la mitad desordenada. En cada vuelta del bucle exterior, el algoritmo recogerá el siguiente elemento desordenado y lo insertará en la sublista ordenada. b) Ejemplo:

Primer elemento, el 44, está ordenado respecto a sí mismo, o insertado en la sublista vacia [ ] Segundo elemento, el 55, insertado en la sublista [44] Tercer elemento, el 12, insertado en la sublista [44,55] Cuarto elemento, el 42 insertado en la sublista [12,44,55] Quinto elemento, el 94 insertado en la sublista [12,42, 44,55] Sexto elemento, el 18 insertado en la sublista [12,42, 44,55,94] Septimo elemento, el 06 insertado en la sublista [12,18, 42, 44,55,94] Ultimo elemento, el 67 insertado en la sublista [06,12,18, 42, 44,55,94] LISTA FINAL= [06,12,18, 42, 44,55,67,94] c) Algoritmo: void insercion(int v[100], int n) int i,j,elem; for (i=1;i < n; i++) elem = v[i]; for (j=i-1; j>= 0 && v[j] > elem; j--) v[j+1 = v[j]; //desplazamiento para hacer hueco en v v[j+1] = elem; //inserción de elem d) Eficiencia : O(n 2 ) e) Variante: inserción binaria (determina la posición de inserción en la sublista ordenada mediante búsqueda binaria.