Post on 04-Jun-2015
transcript
UNIDAD TEMAacuteTICA 4 REPRESENTACIOacuteN Y MANIPULACIOacuteN DE ESTRUCTURAS ALGORITMOS DE ORDENAMIENTO Y DE BUacuteSQUEDA
1 Introduccioacuten 2 Estructura de datos 3 Clasificacioacuten de Estructuras de datos 4 Estructuras de datos Estaacuteticas- Arreglos 5 Algoritmos de Ordenamiento Burbuja Shell Seleccioacuten Mezcla Insercioacuten Montiacuteculo Raacutepido
UNIDAD TEMAacuteTICA 4 REPRESENTACIOacuteN Y MANIPULACIOacuteN DE ESTRUCTURAS ALGORITMOS DE ORDENAMIENTO Y DE BUacuteSQUEDA
6 Algoritmos de Buacutesqueda Lineal o Secuencial Binaria
1 Introduccioacuten
La informacioacuten que se maneja de manera cotidiana puede ser organizada y analizada de tal manera que nos ofrezca una serie de alternativas para en su momento utilizarla de forma adecuada
La idea es obtener el mayor beneficio del anaacutelisis y concentracioacuten de toda la informacioacuten
Para esto podemos hacer uso de las estructuras de datos
2 Estructura de datos
Una estructura de datos es una coleccioacuten de datos que tienen el mismo nombre
Los medios por los cuales se relacionan unos elementos con otros determinan el tipo de estructura de datos
El valor de la estructura de datos se determina por
El valor de los elementos
La composicioacuten de los elementos
3Clasificacioacuten de Estructura de datos
Las estructuras de datos se pueden clasificar en dos grandes grupos
Estaacuteticas Arreglos (vectores y matrices) Registros (struct) Archivos (file)
Dinaacutemicas Lineales Pilas Colas Listas No lineales Aacuterboles Grafos
4Estructura de datos Estaacutetica Arreglos
Un arreglo (disposicioacuten vector o lista tabla o matriz) es una estructura de datos utilizada para almacenar un conjunto de datos del mismo tipo
Un arreglo se identifica por su nombre y se le asocia con un nombre vaacutelido de variable
Los componentes individuales de un arreglo se llaman elementos y se distinguen entre ellos por el nombre del arreglo seguido de uno o varios iacutendices o subiacutendices entre corchetes
4Estructura de datos Estaacutetica Arreglos
Los elementos de un arreglo se almacenan en la memoria de la computadora en posiciones adyacente (un elemento por posicioacuten)
Los elementos del arreglos se pueden procesar individualmente todas las veces que se desee o bien todo el arreglo completo
Los arreglos se clasifican en unidimensionales bidimensionales y multidimensionales
4Estructura de datos Estaacutetica Arreglos
Para poder utilizar arreglos en un problema es necesario declararlos previamente al comienzo del programa indicando el nuacutemero y tipo de elementos que puede contener
4
12
3
0
7
14
4 12 3 0 7 14
4Estructura de datos Estaacutetica Arreglos
Un arreglo unidimensional o vector es una secuencia de elementos en la que todos son del mismo tipo y en los que el orden es significativo
El orden viene dado por el subiacutendice del vector
K[0] 4
K[1] 12
K[2] 3
K[3] 0
K[4] 7
K[5] 14
4 12 3 0 7 14
K[0] K[1] K[2] K[3] K[4] K[5]
4Estructura de datos Estaacutetica Arreglos
La declaracioacuten del nuacutemero y el tipo de elementos se realiza de diferentes formas seguacuten el tipo de lenguaje en el que se vaya a implementar
int A[10] float x[7] char p[12]
Las operaciones con los vectores o listas se pueden
realizar en forma individual o sobre el vector completo mediante las instrucciones baacutesicas y estructuras de control
4Estructura de datos Estaacutetica Arreglos
Operaciones sobre los
elementos
Asignacioacuten Lectura
Escritura
Operaciones sobre el vector
completo
Recorrido Buacutesqueda Insercioacuten
Eliminacioacuten
4Estructura de datos Estaacutetica Arreglos
Un arreglo bidimensional es un vector de vectores
Es un conjunto de elementos todos del mismo tipo en los que el orden de los componentes es significativo y en el que se necesitan dos subiacutendices para definir cualquier elemento
Se le llama tambieacuten tabla o matriz
4 10
12 25
3 7
0 4
7 12
14 9
5 ALGORITMOS DE ORDENAMIENTO
La ordenacioacuten (sort) de datos consiste en la disposicioacuten de los mismos de acuerdo a cierta caracteriacutestica
Una coleccioacuten de datos clasificados se pueden almacenar en un archivo vector o tabla una lista enlazada o aacuterbol
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Interna- cuando los datos son almacenados en vectores listas enlazadas tablas o arboles
Externa- aquellos que estaacuten almacenados en archivos cintas o dispositivos electroacutenicos
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Ascendente- cuando se tiene de menor a mayor los elementos de la lista ya sea alfabeacuteticamente o numeacutericamente
Descendente- cuando se tiene de mayor a menor los elementos de la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Llamado tambieacuten de intercambio directo o bubble sort
Es uno de los mas conocidos
Mas sencillo
Mas faacutecil de implementar
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Comparar elementos consecutivos en cada paso a lo largo del arreglo
Cada vez que se realiza una comparacioacuten los elementos se intercambian entre si en caso de no estar en orden
Se le llama de burbuja porque en la ordenacioacuten los elementos mas ligeros suben en la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Se pasa varias veces a traveacutes del arreglo en forma secuencial
Cada paso consiste en la comparacioacuten de cada elemento con su sucesor y el intercambio de los dos elementos si no estaacuten en el orden correcto
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Simulacioacuten del funcionamiento del meacutetodo de burbuja usando un programa de C
Programa-ordenamiento-burbuja
Programa en C de burbuja
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Analisis de eficiencia-
Hay n-1 comparaciones y pasos en este meacutetodo Por lo que el numero total de comparaciones es O(n )
El numero de intercambios depende del orden original del archivo
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Anaacutelisis de eficiencia-
La uacutenica caracteriacutestica redentora de este ordenamiento es que requiere de poco espacio adicional para guardar el valor temporal para el intercambio y de algunas variables enteras simples
Que es O(n) en el caso de un arreglo ordenado en su totalidad o casi desordenado en su totalidad
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
La idea baacutesica de esta ordenacioacuten es
Encontrar el elemento menor ( o mayor) de la lista y colocarlo en la primera posicioacuten a continuacioacuten el elemento siguiente menor (o mayor) se lleva a la segunda posicioacuten y asiacute sucesivamente hasta que queda ordenado
Cualquier ordenamiento pos seleccioacuten puede conceptualizarse como un algoritmo que usa una cola de prioridad descendente
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Simulacioacuten del funcionamiento del meacutetodo de seleccioacuten usando un programa de C
Programa-ordenamiento-seleccioacuten
Programa en C del meacutetodo de seleccioacuten
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
UNIDAD TEMAacuteTICA 4 REPRESENTACIOacuteN Y MANIPULACIOacuteN DE ESTRUCTURAS ALGORITMOS DE ORDENAMIENTO Y DE BUacuteSQUEDA
6 Algoritmos de Buacutesqueda Lineal o Secuencial Binaria
1 Introduccioacuten
La informacioacuten que se maneja de manera cotidiana puede ser organizada y analizada de tal manera que nos ofrezca una serie de alternativas para en su momento utilizarla de forma adecuada
La idea es obtener el mayor beneficio del anaacutelisis y concentracioacuten de toda la informacioacuten
Para esto podemos hacer uso de las estructuras de datos
2 Estructura de datos
Una estructura de datos es una coleccioacuten de datos que tienen el mismo nombre
Los medios por los cuales se relacionan unos elementos con otros determinan el tipo de estructura de datos
El valor de la estructura de datos se determina por
El valor de los elementos
La composicioacuten de los elementos
3Clasificacioacuten de Estructura de datos
Las estructuras de datos se pueden clasificar en dos grandes grupos
Estaacuteticas Arreglos (vectores y matrices) Registros (struct) Archivos (file)
Dinaacutemicas Lineales Pilas Colas Listas No lineales Aacuterboles Grafos
4Estructura de datos Estaacutetica Arreglos
Un arreglo (disposicioacuten vector o lista tabla o matriz) es una estructura de datos utilizada para almacenar un conjunto de datos del mismo tipo
Un arreglo se identifica por su nombre y se le asocia con un nombre vaacutelido de variable
Los componentes individuales de un arreglo se llaman elementos y se distinguen entre ellos por el nombre del arreglo seguido de uno o varios iacutendices o subiacutendices entre corchetes
4Estructura de datos Estaacutetica Arreglos
Los elementos de un arreglo se almacenan en la memoria de la computadora en posiciones adyacente (un elemento por posicioacuten)
Los elementos del arreglos se pueden procesar individualmente todas las veces que se desee o bien todo el arreglo completo
Los arreglos se clasifican en unidimensionales bidimensionales y multidimensionales
4Estructura de datos Estaacutetica Arreglos
Para poder utilizar arreglos en un problema es necesario declararlos previamente al comienzo del programa indicando el nuacutemero y tipo de elementos que puede contener
4
12
3
0
7
14
4 12 3 0 7 14
4Estructura de datos Estaacutetica Arreglos
Un arreglo unidimensional o vector es una secuencia de elementos en la que todos son del mismo tipo y en los que el orden es significativo
El orden viene dado por el subiacutendice del vector
K[0] 4
K[1] 12
K[2] 3
K[3] 0
K[4] 7
K[5] 14
4 12 3 0 7 14
K[0] K[1] K[2] K[3] K[4] K[5]
4Estructura de datos Estaacutetica Arreglos
La declaracioacuten del nuacutemero y el tipo de elementos se realiza de diferentes formas seguacuten el tipo de lenguaje en el que se vaya a implementar
int A[10] float x[7] char p[12]
Las operaciones con los vectores o listas se pueden
realizar en forma individual o sobre el vector completo mediante las instrucciones baacutesicas y estructuras de control
4Estructura de datos Estaacutetica Arreglos
Operaciones sobre los
elementos
Asignacioacuten Lectura
Escritura
Operaciones sobre el vector
completo
Recorrido Buacutesqueda Insercioacuten
Eliminacioacuten
4Estructura de datos Estaacutetica Arreglos
Un arreglo bidimensional es un vector de vectores
Es un conjunto de elementos todos del mismo tipo en los que el orden de los componentes es significativo y en el que se necesitan dos subiacutendices para definir cualquier elemento
Se le llama tambieacuten tabla o matriz
4 10
12 25
3 7
0 4
7 12
14 9
5 ALGORITMOS DE ORDENAMIENTO
La ordenacioacuten (sort) de datos consiste en la disposicioacuten de los mismos de acuerdo a cierta caracteriacutestica
Una coleccioacuten de datos clasificados se pueden almacenar en un archivo vector o tabla una lista enlazada o aacuterbol
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Interna- cuando los datos son almacenados en vectores listas enlazadas tablas o arboles
Externa- aquellos que estaacuten almacenados en archivos cintas o dispositivos electroacutenicos
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Ascendente- cuando se tiene de menor a mayor los elementos de la lista ya sea alfabeacuteticamente o numeacutericamente
Descendente- cuando se tiene de mayor a menor los elementos de la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Llamado tambieacuten de intercambio directo o bubble sort
Es uno de los mas conocidos
Mas sencillo
Mas faacutecil de implementar
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Comparar elementos consecutivos en cada paso a lo largo del arreglo
Cada vez que se realiza una comparacioacuten los elementos se intercambian entre si en caso de no estar en orden
Se le llama de burbuja porque en la ordenacioacuten los elementos mas ligeros suben en la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Se pasa varias veces a traveacutes del arreglo en forma secuencial
Cada paso consiste en la comparacioacuten de cada elemento con su sucesor y el intercambio de los dos elementos si no estaacuten en el orden correcto
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Simulacioacuten del funcionamiento del meacutetodo de burbuja usando un programa de C
Programa-ordenamiento-burbuja
Programa en C de burbuja
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Analisis de eficiencia-
Hay n-1 comparaciones y pasos en este meacutetodo Por lo que el numero total de comparaciones es O(n )
El numero de intercambios depende del orden original del archivo
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Anaacutelisis de eficiencia-
La uacutenica caracteriacutestica redentora de este ordenamiento es que requiere de poco espacio adicional para guardar el valor temporal para el intercambio y de algunas variables enteras simples
Que es O(n) en el caso de un arreglo ordenado en su totalidad o casi desordenado en su totalidad
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
La idea baacutesica de esta ordenacioacuten es
Encontrar el elemento menor ( o mayor) de la lista y colocarlo en la primera posicioacuten a continuacioacuten el elemento siguiente menor (o mayor) se lleva a la segunda posicioacuten y asiacute sucesivamente hasta que queda ordenado
Cualquier ordenamiento pos seleccioacuten puede conceptualizarse como un algoritmo que usa una cola de prioridad descendente
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Simulacioacuten del funcionamiento del meacutetodo de seleccioacuten usando un programa de C
Programa-ordenamiento-seleccioacuten
Programa en C del meacutetodo de seleccioacuten
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
1 Introduccioacuten
La informacioacuten que se maneja de manera cotidiana puede ser organizada y analizada de tal manera que nos ofrezca una serie de alternativas para en su momento utilizarla de forma adecuada
La idea es obtener el mayor beneficio del anaacutelisis y concentracioacuten de toda la informacioacuten
Para esto podemos hacer uso de las estructuras de datos
2 Estructura de datos
Una estructura de datos es una coleccioacuten de datos que tienen el mismo nombre
Los medios por los cuales se relacionan unos elementos con otros determinan el tipo de estructura de datos
El valor de la estructura de datos se determina por
El valor de los elementos
La composicioacuten de los elementos
3Clasificacioacuten de Estructura de datos
Las estructuras de datos se pueden clasificar en dos grandes grupos
Estaacuteticas Arreglos (vectores y matrices) Registros (struct) Archivos (file)
Dinaacutemicas Lineales Pilas Colas Listas No lineales Aacuterboles Grafos
4Estructura de datos Estaacutetica Arreglos
Un arreglo (disposicioacuten vector o lista tabla o matriz) es una estructura de datos utilizada para almacenar un conjunto de datos del mismo tipo
Un arreglo se identifica por su nombre y se le asocia con un nombre vaacutelido de variable
Los componentes individuales de un arreglo se llaman elementos y se distinguen entre ellos por el nombre del arreglo seguido de uno o varios iacutendices o subiacutendices entre corchetes
4Estructura de datos Estaacutetica Arreglos
Los elementos de un arreglo se almacenan en la memoria de la computadora en posiciones adyacente (un elemento por posicioacuten)
Los elementos del arreglos se pueden procesar individualmente todas las veces que se desee o bien todo el arreglo completo
Los arreglos se clasifican en unidimensionales bidimensionales y multidimensionales
4Estructura de datos Estaacutetica Arreglos
Para poder utilizar arreglos en un problema es necesario declararlos previamente al comienzo del programa indicando el nuacutemero y tipo de elementos que puede contener
4
12
3
0
7
14
4 12 3 0 7 14
4Estructura de datos Estaacutetica Arreglos
Un arreglo unidimensional o vector es una secuencia de elementos en la que todos son del mismo tipo y en los que el orden es significativo
El orden viene dado por el subiacutendice del vector
K[0] 4
K[1] 12
K[2] 3
K[3] 0
K[4] 7
K[5] 14
4 12 3 0 7 14
K[0] K[1] K[2] K[3] K[4] K[5]
4Estructura de datos Estaacutetica Arreglos
La declaracioacuten del nuacutemero y el tipo de elementos se realiza de diferentes formas seguacuten el tipo de lenguaje en el que se vaya a implementar
int A[10] float x[7] char p[12]
Las operaciones con los vectores o listas se pueden
realizar en forma individual o sobre el vector completo mediante las instrucciones baacutesicas y estructuras de control
4Estructura de datos Estaacutetica Arreglos
Operaciones sobre los
elementos
Asignacioacuten Lectura
Escritura
Operaciones sobre el vector
completo
Recorrido Buacutesqueda Insercioacuten
Eliminacioacuten
4Estructura de datos Estaacutetica Arreglos
Un arreglo bidimensional es un vector de vectores
Es un conjunto de elementos todos del mismo tipo en los que el orden de los componentes es significativo y en el que se necesitan dos subiacutendices para definir cualquier elemento
Se le llama tambieacuten tabla o matriz
4 10
12 25
3 7
0 4
7 12
14 9
5 ALGORITMOS DE ORDENAMIENTO
La ordenacioacuten (sort) de datos consiste en la disposicioacuten de los mismos de acuerdo a cierta caracteriacutestica
Una coleccioacuten de datos clasificados se pueden almacenar en un archivo vector o tabla una lista enlazada o aacuterbol
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Interna- cuando los datos son almacenados en vectores listas enlazadas tablas o arboles
Externa- aquellos que estaacuten almacenados en archivos cintas o dispositivos electroacutenicos
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Ascendente- cuando se tiene de menor a mayor los elementos de la lista ya sea alfabeacuteticamente o numeacutericamente
Descendente- cuando se tiene de mayor a menor los elementos de la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Llamado tambieacuten de intercambio directo o bubble sort
Es uno de los mas conocidos
Mas sencillo
Mas faacutecil de implementar
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Comparar elementos consecutivos en cada paso a lo largo del arreglo
Cada vez que se realiza una comparacioacuten los elementos se intercambian entre si en caso de no estar en orden
Se le llama de burbuja porque en la ordenacioacuten los elementos mas ligeros suben en la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Se pasa varias veces a traveacutes del arreglo en forma secuencial
Cada paso consiste en la comparacioacuten de cada elemento con su sucesor y el intercambio de los dos elementos si no estaacuten en el orden correcto
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Simulacioacuten del funcionamiento del meacutetodo de burbuja usando un programa de C
Programa-ordenamiento-burbuja
Programa en C de burbuja
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Analisis de eficiencia-
Hay n-1 comparaciones y pasos en este meacutetodo Por lo que el numero total de comparaciones es O(n )
El numero de intercambios depende del orden original del archivo
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Anaacutelisis de eficiencia-
La uacutenica caracteriacutestica redentora de este ordenamiento es que requiere de poco espacio adicional para guardar el valor temporal para el intercambio y de algunas variables enteras simples
Que es O(n) en el caso de un arreglo ordenado en su totalidad o casi desordenado en su totalidad
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
La idea baacutesica de esta ordenacioacuten es
Encontrar el elemento menor ( o mayor) de la lista y colocarlo en la primera posicioacuten a continuacioacuten el elemento siguiente menor (o mayor) se lleva a la segunda posicioacuten y asiacute sucesivamente hasta que queda ordenado
Cualquier ordenamiento pos seleccioacuten puede conceptualizarse como un algoritmo que usa una cola de prioridad descendente
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Simulacioacuten del funcionamiento del meacutetodo de seleccioacuten usando un programa de C
Programa-ordenamiento-seleccioacuten
Programa en C del meacutetodo de seleccioacuten
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
2 Estructura de datos
Una estructura de datos es una coleccioacuten de datos que tienen el mismo nombre
Los medios por los cuales se relacionan unos elementos con otros determinan el tipo de estructura de datos
El valor de la estructura de datos se determina por
El valor de los elementos
La composicioacuten de los elementos
3Clasificacioacuten de Estructura de datos
Las estructuras de datos se pueden clasificar en dos grandes grupos
Estaacuteticas Arreglos (vectores y matrices) Registros (struct) Archivos (file)
Dinaacutemicas Lineales Pilas Colas Listas No lineales Aacuterboles Grafos
4Estructura de datos Estaacutetica Arreglos
Un arreglo (disposicioacuten vector o lista tabla o matriz) es una estructura de datos utilizada para almacenar un conjunto de datos del mismo tipo
Un arreglo se identifica por su nombre y se le asocia con un nombre vaacutelido de variable
Los componentes individuales de un arreglo se llaman elementos y se distinguen entre ellos por el nombre del arreglo seguido de uno o varios iacutendices o subiacutendices entre corchetes
4Estructura de datos Estaacutetica Arreglos
Los elementos de un arreglo se almacenan en la memoria de la computadora en posiciones adyacente (un elemento por posicioacuten)
Los elementos del arreglos se pueden procesar individualmente todas las veces que se desee o bien todo el arreglo completo
Los arreglos se clasifican en unidimensionales bidimensionales y multidimensionales
4Estructura de datos Estaacutetica Arreglos
Para poder utilizar arreglos en un problema es necesario declararlos previamente al comienzo del programa indicando el nuacutemero y tipo de elementos que puede contener
4
12
3
0
7
14
4 12 3 0 7 14
4Estructura de datos Estaacutetica Arreglos
Un arreglo unidimensional o vector es una secuencia de elementos en la que todos son del mismo tipo y en los que el orden es significativo
El orden viene dado por el subiacutendice del vector
K[0] 4
K[1] 12
K[2] 3
K[3] 0
K[4] 7
K[5] 14
4 12 3 0 7 14
K[0] K[1] K[2] K[3] K[4] K[5]
4Estructura de datos Estaacutetica Arreglos
La declaracioacuten del nuacutemero y el tipo de elementos se realiza de diferentes formas seguacuten el tipo de lenguaje en el que se vaya a implementar
int A[10] float x[7] char p[12]
Las operaciones con los vectores o listas se pueden
realizar en forma individual o sobre el vector completo mediante las instrucciones baacutesicas y estructuras de control
4Estructura de datos Estaacutetica Arreglos
Operaciones sobre los
elementos
Asignacioacuten Lectura
Escritura
Operaciones sobre el vector
completo
Recorrido Buacutesqueda Insercioacuten
Eliminacioacuten
4Estructura de datos Estaacutetica Arreglos
Un arreglo bidimensional es un vector de vectores
Es un conjunto de elementos todos del mismo tipo en los que el orden de los componentes es significativo y en el que se necesitan dos subiacutendices para definir cualquier elemento
Se le llama tambieacuten tabla o matriz
4 10
12 25
3 7
0 4
7 12
14 9
5 ALGORITMOS DE ORDENAMIENTO
La ordenacioacuten (sort) de datos consiste en la disposicioacuten de los mismos de acuerdo a cierta caracteriacutestica
Una coleccioacuten de datos clasificados se pueden almacenar en un archivo vector o tabla una lista enlazada o aacuterbol
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Interna- cuando los datos son almacenados en vectores listas enlazadas tablas o arboles
Externa- aquellos que estaacuten almacenados en archivos cintas o dispositivos electroacutenicos
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Ascendente- cuando se tiene de menor a mayor los elementos de la lista ya sea alfabeacuteticamente o numeacutericamente
Descendente- cuando se tiene de mayor a menor los elementos de la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Llamado tambieacuten de intercambio directo o bubble sort
Es uno de los mas conocidos
Mas sencillo
Mas faacutecil de implementar
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Comparar elementos consecutivos en cada paso a lo largo del arreglo
Cada vez que se realiza una comparacioacuten los elementos se intercambian entre si en caso de no estar en orden
Se le llama de burbuja porque en la ordenacioacuten los elementos mas ligeros suben en la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Se pasa varias veces a traveacutes del arreglo en forma secuencial
Cada paso consiste en la comparacioacuten de cada elemento con su sucesor y el intercambio de los dos elementos si no estaacuten en el orden correcto
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Simulacioacuten del funcionamiento del meacutetodo de burbuja usando un programa de C
Programa-ordenamiento-burbuja
Programa en C de burbuja
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Analisis de eficiencia-
Hay n-1 comparaciones y pasos en este meacutetodo Por lo que el numero total de comparaciones es O(n )
El numero de intercambios depende del orden original del archivo
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Anaacutelisis de eficiencia-
La uacutenica caracteriacutestica redentora de este ordenamiento es que requiere de poco espacio adicional para guardar el valor temporal para el intercambio y de algunas variables enteras simples
Que es O(n) en el caso de un arreglo ordenado en su totalidad o casi desordenado en su totalidad
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
La idea baacutesica de esta ordenacioacuten es
Encontrar el elemento menor ( o mayor) de la lista y colocarlo en la primera posicioacuten a continuacioacuten el elemento siguiente menor (o mayor) se lleva a la segunda posicioacuten y asiacute sucesivamente hasta que queda ordenado
Cualquier ordenamiento pos seleccioacuten puede conceptualizarse como un algoritmo que usa una cola de prioridad descendente
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Simulacioacuten del funcionamiento del meacutetodo de seleccioacuten usando un programa de C
Programa-ordenamiento-seleccioacuten
Programa en C del meacutetodo de seleccioacuten
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
3Clasificacioacuten de Estructura de datos
Las estructuras de datos se pueden clasificar en dos grandes grupos
Estaacuteticas Arreglos (vectores y matrices) Registros (struct) Archivos (file)
Dinaacutemicas Lineales Pilas Colas Listas No lineales Aacuterboles Grafos
4Estructura de datos Estaacutetica Arreglos
Un arreglo (disposicioacuten vector o lista tabla o matriz) es una estructura de datos utilizada para almacenar un conjunto de datos del mismo tipo
Un arreglo se identifica por su nombre y se le asocia con un nombre vaacutelido de variable
Los componentes individuales de un arreglo se llaman elementos y se distinguen entre ellos por el nombre del arreglo seguido de uno o varios iacutendices o subiacutendices entre corchetes
4Estructura de datos Estaacutetica Arreglos
Los elementos de un arreglo se almacenan en la memoria de la computadora en posiciones adyacente (un elemento por posicioacuten)
Los elementos del arreglos se pueden procesar individualmente todas las veces que se desee o bien todo el arreglo completo
Los arreglos se clasifican en unidimensionales bidimensionales y multidimensionales
4Estructura de datos Estaacutetica Arreglos
Para poder utilizar arreglos en un problema es necesario declararlos previamente al comienzo del programa indicando el nuacutemero y tipo de elementos que puede contener
4
12
3
0
7
14
4 12 3 0 7 14
4Estructura de datos Estaacutetica Arreglos
Un arreglo unidimensional o vector es una secuencia de elementos en la que todos son del mismo tipo y en los que el orden es significativo
El orden viene dado por el subiacutendice del vector
K[0] 4
K[1] 12
K[2] 3
K[3] 0
K[4] 7
K[5] 14
4 12 3 0 7 14
K[0] K[1] K[2] K[3] K[4] K[5]
4Estructura de datos Estaacutetica Arreglos
La declaracioacuten del nuacutemero y el tipo de elementos se realiza de diferentes formas seguacuten el tipo de lenguaje en el que se vaya a implementar
int A[10] float x[7] char p[12]
Las operaciones con los vectores o listas se pueden
realizar en forma individual o sobre el vector completo mediante las instrucciones baacutesicas y estructuras de control
4Estructura de datos Estaacutetica Arreglos
Operaciones sobre los
elementos
Asignacioacuten Lectura
Escritura
Operaciones sobre el vector
completo
Recorrido Buacutesqueda Insercioacuten
Eliminacioacuten
4Estructura de datos Estaacutetica Arreglos
Un arreglo bidimensional es un vector de vectores
Es un conjunto de elementos todos del mismo tipo en los que el orden de los componentes es significativo y en el que se necesitan dos subiacutendices para definir cualquier elemento
Se le llama tambieacuten tabla o matriz
4 10
12 25
3 7
0 4
7 12
14 9
5 ALGORITMOS DE ORDENAMIENTO
La ordenacioacuten (sort) de datos consiste en la disposicioacuten de los mismos de acuerdo a cierta caracteriacutestica
Una coleccioacuten de datos clasificados se pueden almacenar en un archivo vector o tabla una lista enlazada o aacuterbol
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Interna- cuando los datos son almacenados en vectores listas enlazadas tablas o arboles
Externa- aquellos que estaacuten almacenados en archivos cintas o dispositivos electroacutenicos
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Ascendente- cuando se tiene de menor a mayor los elementos de la lista ya sea alfabeacuteticamente o numeacutericamente
Descendente- cuando se tiene de mayor a menor los elementos de la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Llamado tambieacuten de intercambio directo o bubble sort
Es uno de los mas conocidos
Mas sencillo
Mas faacutecil de implementar
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Comparar elementos consecutivos en cada paso a lo largo del arreglo
Cada vez que se realiza una comparacioacuten los elementos se intercambian entre si en caso de no estar en orden
Se le llama de burbuja porque en la ordenacioacuten los elementos mas ligeros suben en la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Se pasa varias veces a traveacutes del arreglo en forma secuencial
Cada paso consiste en la comparacioacuten de cada elemento con su sucesor y el intercambio de los dos elementos si no estaacuten en el orden correcto
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Simulacioacuten del funcionamiento del meacutetodo de burbuja usando un programa de C
Programa-ordenamiento-burbuja
Programa en C de burbuja
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Analisis de eficiencia-
Hay n-1 comparaciones y pasos en este meacutetodo Por lo que el numero total de comparaciones es O(n )
El numero de intercambios depende del orden original del archivo
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Anaacutelisis de eficiencia-
La uacutenica caracteriacutestica redentora de este ordenamiento es que requiere de poco espacio adicional para guardar el valor temporal para el intercambio y de algunas variables enteras simples
Que es O(n) en el caso de un arreglo ordenado en su totalidad o casi desordenado en su totalidad
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
La idea baacutesica de esta ordenacioacuten es
Encontrar el elemento menor ( o mayor) de la lista y colocarlo en la primera posicioacuten a continuacioacuten el elemento siguiente menor (o mayor) se lleva a la segunda posicioacuten y asiacute sucesivamente hasta que queda ordenado
Cualquier ordenamiento pos seleccioacuten puede conceptualizarse como un algoritmo que usa una cola de prioridad descendente
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Simulacioacuten del funcionamiento del meacutetodo de seleccioacuten usando un programa de C
Programa-ordenamiento-seleccioacuten
Programa en C del meacutetodo de seleccioacuten
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
4Estructura de datos Estaacutetica Arreglos
Un arreglo (disposicioacuten vector o lista tabla o matriz) es una estructura de datos utilizada para almacenar un conjunto de datos del mismo tipo
Un arreglo se identifica por su nombre y se le asocia con un nombre vaacutelido de variable
Los componentes individuales de un arreglo se llaman elementos y se distinguen entre ellos por el nombre del arreglo seguido de uno o varios iacutendices o subiacutendices entre corchetes
4Estructura de datos Estaacutetica Arreglos
Los elementos de un arreglo se almacenan en la memoria de la computadora en posiciones adyacente (un elemento por posicioacuten)
Los elementos del arreglos se pueden procesar individualmente todas las veces que se desee o bien todo el arreglo completo
Los arreglos se clasifican en unidimensionales bidimensionales y multidimensionales
4Estructura de datos Estaacutetica Arreglos
Para poder utilizar arreglos en un problema es necesario declararlos previamente al comienzo del programa indicando el nuacutemero y tipo de elementos que puede contener
4
12
3
0
7
14
4 12 3 0 7 14
4Estructura de datos Estaacutetica Arreglos
Un arreglo unidimensional o vector es una secuencia de elementos en la que todos son del mismo tipo y en los que el orden es significativo
El orden viene dado por el subiacutendice del vector
K[0] 4
K[1] 12
K[2] 3
K[3] 0
K[4] 7
K[5] 14
4 12 3 0 7 14
K[0] K[1] K[2] K[3] K[4] K[5]
4Estructura de datos Estaacutetica Arreglos
La declaracioacuten del nuacutemero y el tipo de elementos se realiza de diferentes formas seguacuten el tipo de lenguaje en el que se vaya a implementar
int A[10] float x[7] char p[12]
Las operaciones con los vectores o listas se pueden
realizar en forma individual o sobre el vector completo mediante las instrucciones baacutesicas y estructuras de control
4Estructura de datos Estaacutetica Arreglos
Operaciones sobre los
elementos
Asignacioacuten Lectura
Escritura
Operaciones sobre el vector
completo
Recorrido Buacutesqueda Insercioacuten
Eliminacioacuten
4Estructura de datos Estaacutetica Arreglos
Un arreglo bidimensional es un vector de vectores
Es un conjunto de elementos todos del mismo tipo en los que el orden de los componentes es significativo y en el que se necesitan dos subiacutendices para definir cualquier elemento
Se le llama tambieacuten tabla o matriz
4 10
12 25
3 7
0 4
7 12
14 9
5 ALGORITMOS DE ORDENAMIENTO
La ordenacioacuten (sort) de datos consiste en la disposicioacuten de los mismos de acuerdo a cierta caracteriacutestica
Una coleccioacuten de datos clasificados se pueden almacenar en un archivo vector o tabla una lista enlazada o aacuterbol
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Interna- cuando los datos son almacenados en vectores listas enlazadas tablas o arboles
Externa- aquellos que estaacuten almacenados en archivos cintas o dispositivos electroacutenicos
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Ascendente- cuando se tiene de menor a mayor los elementos de la lista ya sea alfabeacuteticamente o numeacutericamente
Descendente- cuando se tiene de mayor a menor los elementos de la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Llamado tambieacuten de intercambio directo o bubble sort
Es uno de los mas conocidos
Mas sencillo
Mas faacutecil de implementar
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Comparar elementos consecutivos en cada paso a lo largo del arreglo
Cada vez que se realiza una comparacioacuten los elementos se intercambian entre si en caso de no estar en orden
Se le llama de burbuja porque en la ordenacioacuten los elementos mas ligeros suben en la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Se pasa varias veces a traveacutes del arreglo en forma secuencial
Cada paso consiste en la comparacioacuten de cada elemento con su sucesor y el intercambio de los dos elementos si no estaacuten en el orden correcto
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Simulacioacuten del funcionamiento del meacutetodo de burbuja usando un programa de C
Programa-ordenamiento-burbuja
Programa en C de burbuja
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Analisis de eficiencia-
Hay n-1 comparaciones y pasos en este meacutetodo Por lo que el numero total de comparaciones es O(n )
El numero de intercambios depende del orden original del archivo
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Anaacutelisis de eficiencia-
La uacutenica caracteriacutestica redentora de este ordenamiento es que requiere de poco espacio adicional para guardar el valor temporal para el intercambio y de algunas variables enteras simples
Que es O(n) en el caso de un arreglo ordenado en su totalidad o casi desordenado en su totalidad
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
La idea baacutesica de esta ordenacioacuten es
Encontrar el elemento menor ( o mayor) de la lista y colocarlo en la primera posicioacuten a continuacioacuten el elemento siguiente menor (o mayor) se lleva a la segunda posicioacuten y asiacute sucesivamente hasta que queda ordenado
Cualquier ordenamiento pos seleccioacuten puede conceptualizarse como un algoritmo que usa una cola de prioridad descendente
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Simulacioacuten del funcionamiento del meacutetodo de seleccioacuten usando un programa de C
Programa-ordenamiento-seleccioacuten
Programa en C del meacutetodo de seleccioacuten
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
4Estructura de datos Estaacutetica Arreglos
Los elementos de un arreglo se almacenan en la memoria de la computadora en posiciones adyacente (un elemento por posicioacuten)
Los elementos del arreglos se pueden procesar individualmente todas las veces que se desee o bien todo el arreglo completo
Los arreglos se clasifican en unidimensionales bidimensionales y multidimensionales
4Estructura de datos Estaacutetica Arreglos
Para poder utilizar arreglos en un problema es necesario declararlos previamente al comienzo del programa indicando el nuacutemero y tipo de elementos que puede contener
4
12
3
0
7
14
4 12 3 0 7 14
4Estructura de datos Estaacutetica Arreglos
Un arreglo unidimensional o vector es una secuencia de elementos en la que todos son del mismo tipo y en los que el orden es significativo
El orden viene dado por el subiacutendice del vector
K[0] 4
K[1] 12
K[2] 3
K[3] 0
K[4] 7
K[5] 14
4 12 3 0 7 14
K[0] K[1] K[2] K[3] K[4] K[5]
4Estructura de datos Estaacutetica Arreglos
La declaracioacuten del nuacutemero y el tipo de elementos se realiza de diferentes formas seguacuten el tipo de lenguaje en el que se vaya a implementar
int A[10] float x[7] char p[12]
Las operaciones con los vectores o listas se pueden
realizar en forma individual o sobre el vector completo mediante las instrucciones baacutesicas y estructuras de control
4Estructura de datos Estaacutetica Arreglos
Operaciones sobre los
elementos
Asignacioacuten Lectura
Escritura
Operaciones sobre el vector
completo
Recorrido Buacutesqueda Insercioacuten
Eliminacioacuten
4Estructura de datos Estaacutetica Arreglos
Un arreglo bidimensional es un vector de vectores
Es un conjunto de elementos todos del mismo tipo en los que el orden de los componentes es significativo y en el que se necesitan dos subiacutendices para definir cualquier elemento
Se le llama tambieacuten tabla o matriz
4 10
12 25
3 7
0 4
7 12
14 9
5 ALGORITMOS DE ORDENAMIENTO
La ordenacioacuten (sort) de datos consiste en la disposicioacuten de los mismos de acuerdo a cierta caracteriacutestica
Una coleccioacuten de datos clasificados se pueden almacenar en un archivo vector o tabla una lista enlazada o aacuterbol
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Interna- cuando los datos son almacenados en vectores listas enlazadas tablas o arboles
Externa- aquellos que estaacuten almacenados en archivos cintas o dispositivos electroacutenicos
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Ascendente- cuando se tiene de menor a mayor los elementos de la lista ya sea alfabeacuteticamente o numeacutericamente
Descendente- cuando se tiene de mayor a menor los elementos de la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Llamado tambieacuten de intercambio directo o bubble sort
Es uno de los mas conocidos
Mas sencillo
Mas faacutecil de implementar
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Comparar elementos consecutivos en cada paso a lo largo del arreglo
Cada vez que se realiza una comparacioacuten los elementos se intercambian entre si en caso de no estar en orden
Se le llama de burbuja porque en la ordenacioacuten los elementos mas ligeros suben en la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Se pasa varias veces a traveacutes del arreglo en forma secuencial
Cada paso consiste en la comparacioacuten de cada elemento con su sucesor y el intercambio de los dos elementos si no estaacuten en el orden correcto
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Simulacioacuten del funcionamiento del meacutetodo de burbuja usando un programa de C
Programa-ordenamiento-burbuja
Programa en C de burbuja
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Analisis de eficiencia-
Hay n-1 comparaciones y pasos en este meacutetodo Por lo que el numero total de comparaciones es O(n )
El numero de intercambios depende del orden original del archivo
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Anaacutelisis de eficiencia-
La uacutenica caracteriacutestica redentora de este ordenamiento es que requiere de poco espacio adicional para guardar el valor temporal para el intercambio y de algunas variables enteras simples
Que es O(n) en el caso de un arreglo ordenado en su totalidad o casi desordenado en su totalidad
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
La idea baacutesica de esta ordenacioacuten es
Encontrar el elemento menor ( o mayor) de la lista y colocarlo en la primera posicioacuten a continuacioacuten el elemento siguiente menor (o mayor) se lleva a la segunda posicioacuten y asiacute sucesivamente hasta que queda ordenado
Cualquier ordenamiento pos seleccioacuten puede conceptualizarse como un algoritmo que usa una cola de prioridad descendente
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Simulacioacuten del funcionamiento del meacutetodo de seleccioacuten usando un programa de C
Programa-ordenamiento-seleccioacuten
Programa en C del meacutetodo de seleccioacuten
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
4Estructura de datos Estaacutetica Arreglos
Para poder utilizar arreglos en un problema es necesario declararlos previamente al comienzo del programa indicando el nuacutemero y tipo de elementos que puede contener
4
12
3
0
7
14
4 12 3 0 7 14
4Estructura de datos Estaacutetica Arreglos
Un arreglo unidimensional o vector es una secuencia de elementos en la que todos son del mismo tipo y en los que el orden es significativo
El orden viene dado por el subiacutendice del vector
K[0] 4
K[1] 12
K[2] 3
K[3] 0
K[4] 7
K[5] 14
4 12 3 0 7 14
K[0] K[1] K[2] K[3] K[4] K[5]
4Estructura de datos Estaacutetica Arreglos
La declaracioacuten del nuacutemero y el tipo de elementos se realiza de diferentes formas seguacuten el tipo de lenguaje en el que se vaya a implementar
int A[10] float x[7] char p[12]
Las operaciones con los vectores o listas se pueden
realizar en forma individual o sobre el vector completo mediante las instrucciones baacutesicas y estructuras de control
4Estructura de datos Estaacutetica Arreglos
Operaciones sobre los
elementos
Asignacioacuten Lectura
Escritura
Operaciones sobre el vector
completo
Recorrido Buacutesqueda Insercioacuten
Eliminacioacuten
4Estructura de datos Estaacutetica Arreglos
Un arreglo bidimensional es un vector de vectores
Es un conjunto de elementos todos del mismo tipo en los que el orden de los componentes es significativo y en el que se necesitan dos subiacutendices para definir cualquier elemento
Se le llama tambieacuten tabla o matriz
4 10
12 25
3 7
0 4
7 12
14 9
5 ALGORITMOS DE ORDENAMIENTO
La ordenacioacuten (sort) de datos consiste en la disposicioacuten de los mismos de acuerdo a cierta caracteriacutestica
Una coleccioacuten de datos clasificados se pueden almacenar en un archivo vector o tabla una lista enlazada o aacuterbol
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Interna- cuando los datos son almacenados en vectores listas enlazadas tablas o arboles
Externa- aquellos que estaacuten almacenados en archivos cintas o dispositivos electroacutenicos
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Ascendente- cuando se tiene de menor a mayor los elementos de la lista ya sea alfabeacuteticamente o numeacutericamente
Descendente- cuando se tiene de mayor a menor los elementos de la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Llamado tambieacuten de intercambio directo o bubble sort
Es uno de los mas conocidos
Mas sencillo
Mas faacutecil de implementar
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Comparar elementos consecutivos en cada paso a lo largo del arreglo
Cada vez que se realiza una comparacioacuten los elementos se intercambian entre si en caso de no estar en orden
Se le llama de burbuja porque en la ordenacioacuten los elementos mas ligeros suben en la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Se pasa varias veces a traveacutes del arreglo en forma secuencial
Cada paso consiste en la comparacioacuten de cada elemento con su sucesor y el intercambio de los dos elementos si no estaacuten en el orden correcto
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Simulacioacuten del funcionamiento del meacutetodo de burbuja usando un programa de C
Programa-ordenamiento-burbuja
Programa en C de burbuja
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Analisis de eficiencia-
Hay n-1 comparaciones y pasos en este meacutetodo Por lo que el numero total de comparaciones es O(n )
El numero de intercambios depende del orden original del archivo
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Anaacutelisis de eficiencia-
La uacutenica caracteriacutestica redentora de este ordenamiento es que requiere de poco espacio adicional para guardar el valor temporal para el intercambio y de algunas variables enteras simples
Que es O(n) en el caso de un arreglo ordenado en su totalidad o casi desordenado en su totalidad
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
La idea baacutesica de esta ordenacioacuten es
Encontrar el elemento menor ( o mayor) de la lista y colocarlo en la primera posicioacuten a continuacioacuten el elemento siguiente menor (o mayor) se lleva a la segunda posicioacuten y asiacute sucesivamente hasta que queda ordenado
Cualquier ordenamiento pos seleccioacuten puede conceptualizarse como un algoritmo que usa una cola de prioridad descendente
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Simulacioacuten del funcionamiento del meacutetodo de seleccioacuten usando un programa de C
Programa-ordenamiento-seleccioacuten
Programa en C del meacutetodo de seleccioacuten
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
4Estructura de datos Estaacutetica Arreglos
Un arreglo unidimensional o vector es una secuencia de elementos en la que todos son del mismo tipo y en los que el orden es significativo
El orden viene dado por el subiacutendice del vector
K[0] 4
K[1] 12
K[2] 3
K[3] 0
K[4] 7
K[5] 14
4 12 3 0 7 14
K[0] K[1] K[2] K[3] K[4] K[5]
4Estructura de datos Estaacutetica Arreglos
La declaracioacuten del nuacutemero y el tipo de elementos se realiza de diferentes formas seguacuten el tipo de lenguaje en el que se vaya a implementar
int A[10] float x[7] char p[12]
Las operaciones con los vectores o listas se pueden
realizar en forma individual o sobre el vector completo mediante las instrucciones baacutesicas y estructuras de control
4Estructura de datos Estaacutetica Arreglos
Operaciones sobre los
elementos
Asignacioacuten Lectura
Escritura
Operaciones sobre el vector
completo
Recorrido Buacutesqueda Insercioacuten
Eliminacioacuten
4Estructura de datos Estaacutetica Arreglos
Un arreglo bidimensional es un vector de vectores
Es un conjunto de elementos todos del mismo tipo en los que el orden de los componentes es significativo y en el que se necesitan dos subiacutendices para definir cualquier elemento
Se le llama tambieacuten tabla o matriz
4 10
12 25
3 7
0 4
7 12
14 9
5 ALGORITMOS DE ORDENAMIENTO
La ordenacioacuten (sort) de datos consiste en la disposicioacuten de los mismos de acuerdo a cierta caracteriacutestica
Una coleccioacuten de datos clasificados se pueden almacenar en un archivo vector o tabla una lista enlazada o aacuterbol
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Interna- cuando los datos son almacenados en vectores listas enlazadas tablas o arboles
Externa- aquellos que estaacuten almacenados en archivos cintas o dispositivos electroacutenicos
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Ascendente- cuando se tiene de menor a mayor los elementos de la lista ya sea alfabeacuteticamente o numeacutericamente
Descendente- cuando se tiene de mayor a menor los elementos de la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Llamado tambieacuten de intercambio directo o bubble sort
Es uno de los mas conocidos
Mas sencillo
Mas faacutecil de implementar
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Comparar elementos consecutivos en cada paso a lo largo del arreglo
Cada vez que se realiza una comparacioacuten los elementos se intercambian entre si en caso de no estar en orden
Se le llama de burbuja porque en la ordenacioacuten los elementos mas ligeros suben en la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Se pasa varias veces a traveacutes del arreglo en forma secuencial
Cada paso consiste en la comparacioacuten de cada elemento con su sucesor y el intercambio de los dos elementos si no estaacuten en el orden correcto
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Simulacioacuten del funcionamiento del meacutetodo de burbuja usando un programa de C
Programa-ordenamiento-burbuja
Programa en C de burbuja
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Analisis de eficiencia-
Hay n-1 comparaciones y pasos en este meacutetodo Por lo que el numero total de comparaciones es O(n )
El numero de intercambios depende del orden original del archivo
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Anaacutelisis de eficiencia-
La uacutenica caracteriacutestica redentora de este ordenamiento es que requiere de poco espacio adicional para guardar el valor temporal para el intercambio y de algunas variables enteras simples
Que es O(n) en el caso de un arreglo ordenado en su totalidad o casi desordenado en su totalidad
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
La idea baacutesica de esta ordenacioacuten es
Encontrar el elemento menor ( o mayor) de la lista y colocarlo en la primera posicioacuten a continuacioacuten el elemento siguiente menor (o mayor) se lleva a la segunda posicioacuten y asiacute sucesivamente hasta que queda ordenado
Cualquier ordenamiento pos seleccioacuten puede conceptualizarse como un algoritmo que usa una cola de prioridad descendente
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Simulacioacuten del funcionamiento del meacutetodo de seleccioacuten usando un programa de C
Programa-ordenamiento-seleccioacuten
Programa en C del meacutetodo de seleccioacuten
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
4Estructura de datos Estaacutetica Arreglos
La declaracioacuten del nuacutemero y el tipo de elementos se realiza de diferentes formas seguacuten el tipo de lenguaje en el que se vaya a implementar
int A[10] float x[7] char p[12]
Las operaciones con los vectores o listas se pueden
realizar en forma individual o sobre el vector completo mediante las instrucciones baacutesicas y estructuras de control
4Estructura de datos Estaacutetica Arreglos
Operaciones sobre los
elementos
Asignacioacuten Lectura
Escritura
Operaciones sobre el vector
completo
Recorrido Buacutesqueda Insercioacuten
Eliminacioacuten
4Estructura de datos Estaacutetica Arreglos
Un arreglo bidimensional es un vector de vectores
Es un conjunto de elementos todos del mismo tipo en los que el orden de los componentes es significativo y en el que se necesitan dos subiacutendices para definir cualquier elemento
Se le llama tambieacuten tabla o matriz
4 10
12 25
3 7
0 4
7 12
14 9
5 ALGORITMOS DE ORDENAMIENTO
La ordenacioacuten (sort) de datos consiste en la disposicioacuten de los mismos de acuerdo a cierta caracteriacutestica
Una coleccioacuten de datos clasificados se pueden almacenar en un archivo vector o tabla una lista enlazada o aacuterbol
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Interna- cuando los datos son almacenados en vectores listas enlazadas tablas o arboles
Externa- aquellos que estaacuten almacenados en archivos cintas o dispositivos electroacutenicos
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Ascendente- cuando se tiene de menor a mayor los elementos de la lista ya sea alfabeacuteticamente o numeacutericamente
Descendente- cuando se tiene de mayor a menor los elementos de la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Llamado tambieacuten de intercambio directo o bubble sort
Es uno de los mas conocidos
Mas sencillo
Mas faacutecil de implementar
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Comparar elementos consecutivos en cada paso a lo largo del arreglo
Cada vez que se realiza una comparacioacuten los elementos se intercambian entre si en caso de no estar en orden
Se le llama de burbuja porque en la ordenacioacuten los elementos mas ligeros suben en la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Se pasa varias veces a traveacutes del arreglo en forma secuencial
Cada paso consiste en la comparacioacuten de cada elemento con su sucesor y el intercambio de los dos elementos si no estaacuten en el orden correcto
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Simulacioacuten del funcionamiento del meacutetodo de burbuja usando un programa de C
Programa-ordenamiento-burbuja
Programa en C de burbuja
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Analisis de eficiencia-
Hay n-1 comparaciones y pasos en este meacutetodo Por lo que el numero total de comparaciones es O(n )
El numero de intercambios depende del orden original del archivo
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Anaacutelisis de eficiencia-
La uacutenica caracteriacutestica redentora de este ordenamiento es que requiere de poco espacio adicional para guardar el valor temporal para el intercambio y de algunas variables enteras simples
Que es O(n) en el caso de un arreglo ordenado en su totalidad o casi desordenado en su totalidad
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
La idea baacutesica de esta ordenacioacuten es
Encontrar el elemento menor ( o mayor) de la lista y colocarlo en la primera posicioacuten a continuacioacuten el elemento siguiente menor (o mayor) se lleva a la segunda posicioacuten y asiacute sucesivamente hasta que queda ordenado
Cualquier ordenamiento pos seleccioacuten puede conceptualizarse como un algoritmo que usa una cola de prioridad descendente
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Simulacioacuten del funcionamiento del meacutetodo de seleccioacuten usando un programa de C
Programa-ordenamiento-seleccioacuten
Programa en C del meacutetodo de seleccioacuten
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
4Estructura de datos Estaacutetica Arreglos
Operaciones sobre los
elementos
Asignacioacuten Lectura
Escritura
Operaciones sobre el vector
completo
Recorrido Buacutesqueda Insercioacuten
Eliminacioacuten
4Estructura de datos Estaacutetica Arreglos
Un arreglo bidimensional es un vector de vectores
Es un conjunto de elementos todos del mismo tipo en los que el orden de los componentes es significativo y en el que se necesitan dos subiacutendices para definir cualquier elemento
Se le llama tambieacuten tabla o matriz
4 10
12 25
3 7
0 4
7 12
14 9
5 ALGORITMOS DE ORDENAMIENTO
La ordenacioacuten (sort) de datos consiste en la disposicioacuten de los mismos de acuerdo a cierta caracteriacutestica
Una coleccioacuten de datos clasificados se pueden almacenar en un archivo vector o tabla una lista enlazada o aacuterbol
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Interna- cuando los datos son almacenados en vectores listas enlazadas tablas o arboles
Externa- aquellos que estaacuten almacenados en archivos cintas o dispositivos electroacutenicos
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Ascendente- cuando se tiene de menor a mayor los elementos de la lista ya sea alfabeacuteticamente o numeacutericamente
Descendente- cuando se tiene de mayor a menor los elementos de la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Llamado tambieacuten de intercambio directo o bubble sort
Es uno de los mas conocidos
Mas sencillo
Mas faacutecil de implementar
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Comparar elementos consecutivos en cada paso a lo largo del arreglo
Cada vez que se realiza una comparacioacuten los elementos se intercambian entre si en caso de no estar en orden
Se le llama de burbuja porque en la ordenacioacuten los elementos mas ligeros suben en la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Se pasa varias veces a traveacutes del arreglo en forma secuencial
Cada paso consiste en la comparacioacuten de cada elemento con su sucesor y el intercambio de los dos elementos si no estaacuten en el orden correcto
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Simulacioacuten del funcionamiento del meacutetodo de burbuja usando un programa de C
Programa-ordenamiento-burbuja
Programa en C de burbuja
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Analisis de eficiencia-
Hay n-1 comparaciones y pasos en este meacutetodo Por lo que el numero total de comparaciones es O(n )
El numero de intercambios depende del orden original del archivo
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Anaacutelisis de eficiencia-
La uacutenica caracteriacutestica redentora de este ordenamiento es que requiere de poco espacio adicional para guardar el valor temporal para el intercambio y de algunas variables enteras simples
Que es O(n) en el caso de un arreglo ordenado en su totalidad o casi desordenado en su totalidad
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
La idea baacutesica de esta ordenacioacuten es
Encontrar el elemento menor ( o mayor) de la lista y colocarlo en la primera posicioacuten a continuacioacuten el elemento siguiente menor (o mayor) se lleva a la segunda posicioacuten y asiacute sucesivamente hasta que queda ordenado
Cualquier ordenamiento pos seleccioacuten puede conceptualizarse como un algoritmo que usa una cola de prioridad descendente
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Simulacioacuten del funcionamiento del meacutetodo de seleccioacuten usando un programa de C
Programa-ordenamiento-seleccioacuten
Programa en C del meacutetodo de seleccioacuten
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
4Estructura de datos Estaacutetica Arreglos
Un arreglo bidimensional es un vector de vectores
Es un conjunto de elementos todos del mismo tipo en los que el orden de los componentes es significativo y en el que se necesitan dos subiacutendices para definir cualquier elemento
Se le llama tambieacuten tabla o matriz
4 10
12 25
3 7
0 4
7 12
14 9
5 ALGORITMOS DE ORDENAMIENTO
La ordenacioacuten (sort) de datos consiste en la disposicioacuten de los mismos de acuerdo a cierta caracteriacutestica
Una coleccioacuten de datos clasificados se pueden almacenar en un archivo vector o tabla una lista enlazada o aacuterbol
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Interna- cuando los datos son almacenados en vectores listas enlazadas tablas o arboles
Externa- aquellos que estaacuten almacenados en archivos cintas o dispositivos electroacutenicos
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Ascendente- cuando se tiene de menor a mayor los elementos de la lista ya sea alfabeacuteticamente o numeacutericamente
Descendente- cuando se tiene de mayor a menor los elementos de la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Llamado tambieacuten de intercambio directo o bubble sort
Es uno de los mas conocidos
Mas sencillo
Mas faacutecil de implementar
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Comparar elementos consecutivos en cada paso a lo largo del arreglo
Cada vez que se realiza una comparacioacuten los elementos se intercambian entre si en caso de no estar en orden
Se le llama de burbuja porque en la ordenacioacuten los elementos mas ligeros suben en la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Se pasa varias veces a traveacutes del arreglo en forma secuencial
Cada paso consiste en la comparacioacuten de cada elemento con su sucesor y el intercambio de los dos elementos si no estaacuten en el orden correcto
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Simulacioacuten del funcionamiento del meacutetodo de burbuja usando un programa de C
Programa-ordenamiento-burbuja
Programa en C de burbuja
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Analisis de eficiencia-
Hay n-1 comparaciones y pasos en este meacutetodo Por lo que el numero total de comparaciones es O(n )
El numero de intercambios depende del orden original del archivo
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Anaacutelisis de eficiencia-
La uacutenica caracteriacutestica redentora de este ordenamiento es que requiere de poco espacio adicional para guardar el valor temporal para el intercambio y de algunas variables enteras simples
Que es O(n) en el caso de un arreglo ordenado en su totalidad o casi desordenado en su totalidad
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
La idea baacutesica de esta ordenacioacuten es
Encontrar el elemento menor ( o mayor) de la lista y colocarlo en la primera posicioacuten a continuacioacuten el elemento siguiente menor (o mayor) se lleva a la segunda posicioacuten y asiacute sucesivamente hasta que queda ordenado
Cualquier ordenamiento pos seleccioacuten puede conceptualizarse como un algoritmo que usa una cola de prioridad descendente
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Simulacioacuten del funcionamiento del meacutetodo de seleccioacuten usando un programa de C
Programa-ordenamiento-seleccioacuten
Programa en C del meacutetodo de seleccioacuten
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO
La ordenacioacuten (sort) de datos consiste en la disposicioacuten de los mismos de acuerdo a cierta caracteriacutestica
Una coleccioacuten de datos clasificados se pueden almacenar en un archivo vector o tabla una lista enlazada o aacuterbol
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Interna- cuando los datos son almacenados en vectores listas enlazadas tablas o arboles
Externa- aquellos que estaacuten almacenados en archivos cintas o dispositivos electroacutenicos
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Ascendente- cuando se tiene de menor a mayor los elementos de la lista ya sea alfabeacuteticamente o numeacutericamente
Descendente- cuando se tiene de mayor a menor los elementos de la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Llamado tambieacuten de intercambio directo o bubble sort
Es uno de los mas conocidos
Mas sencillo
Mas faacutecil de implementar
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Comparar elementos consecutivos en cada paso a lo largo del arreglo
Cada vez que se realiza una comparacioacuten los elementos se intercambian entre si en caso de no estar en orden
Se le llama de burbuja porque en la ordenacioacuten los elementos mas ligeros suben en la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Se pasa varias veces a traveacutes del arreglo en forma secuencial
Cada paso consiste en la comparacioacuten de cada elemento con su sucesor y el intercambio de los dos elementos si no estaacuten en el orden correcto
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Simulacioacuten del funcionamiento del meacutetodo de burbuja usando un programa de C
Programa-ordenamiento-burbuja
Programa en C de burbuja
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Analisis de eficiencia-
Hay n-1 comparaciones y pasos en este meacutetodo Por lo que el numero total de comparaciones es O(n )
El numero de intercambios depende del orden original del archivo
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Anaacutelisis de eficiencia-
La uacutenica caracteriacutestica redentora de este ordenamiento es que requiere de poco espacio adicional para guardar el valor temporal para el intercambio y de algunas variables enteras simples
Que es O(n) en el caso de un arreglo ordenado en su totalidad o casi desordenado en su totalidad
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
La idea baacutesica de esta ordenacioacuten es
Encontrar el elemento menor ( o mayor) de la lista y colocarlo en la primera posicioacuten a continuacioacuten el elemento siguiente menor (o mayor) se lleva a la segunda posicioacuten y asiacute sucesivamente hasta que queda ordenado
Cualquier ordenamiento pos seleccioacuten puede conceptualizarse como un algoritmo que usa una cola de prioridad descendente
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Simulacioacuten del funcionamiento del meacutetodo de seleccioacuten usando un programa de C
Programa-ordenamiento-seleccioacuten
Programa en C del meacutetodo de seleccioacuten
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Interna- cuando los datos son almacenados en vectores listas enlazadas tablas o arboles
Externa- aquellos que estaacuten almacenados en archivos cintas o dispositivos electroacutenicos
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Ascendente- cuando se tiene de menor a mayor los elementos de la lista ya sea alfabeacuteticamente o numeacutericamente
Descendente- cuando se tiene de mayor a menor los elementos de la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Llamado tambieacuten de intercambio directo o bubble sort
Es uno de los mas conocidos
Mas sencillo
Mas faacutecil de implementar
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Comparar elementos consecutivos en cada paso a lo largo del arreglo
Cada vez que se realiza una comparacioacuten los elementos se intercambian entre si en caso de no estar en orden
Se le llama de burbuja porque en la ordenacioacuten los elementos mas ligeros suben en la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Se pasa varias veces a traveacutes del arreglo en forma secuencial
Cada paso consiste en la comparacioacuten de cada elemento con su sucesor y el intercambio de los dos elementos si no estaacuten en el orden correcto
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Simulacioacuten del funcionamiento del meacutetodo de burbuja usando un programa de C
Programa-ordenamiento-burbuja
Programa en C de burbuja
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Analisis de eficiencia-
Hay n-1 comparaciones y pasos en este meacutetodo Por lo que el numero total de comparaciones es O(n )
El numero de intercambios depende del orden original del archivo
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Anaacutelisis de eficiencia-
La uacutenica caracteriacutestica redentora de este ordenamiento es que requiere de poco espacio adicional para guardar el valor temporal para el intercambio y de algunas variables enteras simples
Que es O(n) en el caso de un arreglo ordenado en su totalidad o casi desordenado en su totalidad
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
La idea baacutesica de esta ordenacioacuten es
Encontrar el elemento menor ( o mayor) de la lista y colocarlo en la primera posicioacuten a continuacioacuten el elemento siguiente menor (o mayor) se lleva a la segunda posicioacuten y asiacute sucesivamente hasta que queda ordenado
Cualquier ordenamiento pos seleccioacuten puede conceptualizarse como un algoritmo que usa una cola de prioridad descendente
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Simulacioacuten del funcionamiento del meacutetodo de seleccioacuten usando un programa de C
Programa-ordenamiento-seleccioacuten
Programa en C del meacutetodo de seleccioacuten
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO
Clasificacioacuten de ordenacioacuten
Ascendente- cuando se tiene de menor a mayor los elementos de la lista ya sea alfabeacuteticamente o numeacutericamente
Descendente- cuando se tiene de mayor a menor los elementos de la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Llamado tambieacuten de intercambio directo o bubble sort
Es uno de los mas conocidos
Mas sencillo
Mas faacutecil de implementar
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Comparar elementos consecutivos en cada paso a lo largo del arreglo
Cada vez que se realiza una comparacioacuten los elementos se intercambian entre si en caso de no estar en orden
Se le llama de burbuja porque en la ordenacioacuten los elementos mas ligeros suben en la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Se pasa varias veces a traveacutes del arreglo en forma secuencial
Cada paso consiste en la comparacioacuten de cada elemento con su sucesor y el intercambio de los dos elementos si no estaacuten en el orden correcto
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Simulacioacuten del funcionamiento del meacutetodo de burbuja usando un programa de C
Programa-ordenamiento-burbuja
Programa en C de burbuja
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Analisis de eficiencia-
Hay n-1 comparaciones y pasos en este meacutetodo Por lo que el numero total de comparaciones es O(n )
El numero de intercambios depende del orden original del archivo
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Anaacutelisis de eficiencia-
La uacutenica caracteriacutestica redentora de este ordenamiento es que requiere de poco espacio adicional para guardar el valor temporal para el intercambio y de algunas variables enteras simples
Que es O(n) en el caso de un arreglo ordenado en su totalidad o casi desordenado en su totalidad
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
La idea baacutesica de esta ordenacioacuten es
Encontrar el elemento menor ( o mayor) de la lista y colocarlo en la primera posicioacuten a continuacioacuten el elemento siguiente menor (o mayor) se lleva a la segunda posicioacuten y asiacute sucesivamente hasta que queda ordenado
Cualquier ordenamiento pos seleccioacuten puede conceptualizarse como un algoritmo que usa una cola de prioridad descendente
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Simulacioacuten del funcionamiento del meacutetodo de seleccioacuten usando un programa de C
Programa-ordenamiento-seleccioacuten
Programa en C del meacutetodo de seleccioacuten
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Llamado tambieacuten de intercambio directo o bubble sort
Es uno de los mas conocidos
Mas sencillo
Mas faacutecil de implementar
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Comparar elementos consecutivos en cada paso a lo largo del arreglo
Cada vez que se realiza una comparacioacuten los elementos se intercambian entre si en caso de no estar en orden
Se le llama de burbuja porque en la ordenacioacuten los elementos mas ligeros suben en la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Se pasa varias veces a traveacutes del arreglo en forma secuencial
Cada paso consiste en la comparacioacuten de cada elemento con su sucesor y el intercambio de los dos elementos si no estaacuten en el orden correcto
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Simulacioacuten del funcionamiento del meacutetodo de burbuja usando un programa de C
Programa-ordenamiento-burbuja
Programa en C de burbuja
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Analisis de eficiencia-
Hay n-1 comparaciones y pasos en este meacutetodo Por lo que el numero total de comparaciones es O(n )
El numero de intercambios depende del orden original del archivo
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Anaacutelisis de eficiencia-
La uacutenica caracteriacutestica redentora de este ordenamiento es que requiere de poco espacio adicional para guardar el valor temporal para el intercambio y de algunas variables enteras simples
Que es O(n) en el caso de un arreglo ordenado en su totalidad o casi desordenado en su totalidad
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
La idea baacutesica de esta ordenacioacuten es
Encontrar el elemento menor ( o mayor) de la lista y colocarlo en la primera posicioacuten a continuacioacuten el elemento siguiente menor (o mayor) se lleva a la segunda posicioacuten y asiacute sucesivamente hasta que queda ordenado
Cualquier ordenamiento pos seleccioacuten puede conceptualizarse como un algoritmo que usa una cola de prioridad descendente
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Simulacioacuten del funcionamiento del meacutetodo de seleccioacuten usando un programa de C
Programa-ordenamiento-seleccioacuten
Programa en C del meacutetodo de seleccioacuten
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Comparar elementos consecutivos en cada paso a lo largo del arreglo
Cada vez que se realiza una comparacioacuten los elementos se intercambian entre si en caso de no estar en orden
Se le llama de burbuja porque en la ordenacioacuten los elementos mas ligeros suben en la lista
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Se pasa varias veces a traveacutes del arreglo en forma secuencial
Cada paso consiste en la comparacioacuten de cada elemento con su sucesor y el intercambio de los dos elementos si no estaacuten en el orden correcto
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Simulacioacuten del funcionamiento del meacutetodo de burbuja usando un programa de C
Programa-ordenamiento-burbuja
Programa en C de burbuja
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Analisis de eficiencia-
Hay n-1 comparaciones y pasos en este meacutetodo Por lo que el numero total de comparaciones es O(n )
El numero de intercambios depende del orden original del archivo
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Anaacutelisis de eficiencia-
La uacutenica caracteriacutestica redentora de este ordenamiento es que requiere de poco espacio adicional para guardar el valor temporal para el intercambio y de algunas variables enteras simples
Que es O(n) en el caso de un arreglo ordenado en su totalidad o casi desordenado en su totalidad
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
La idea baacutesica de esta ordenacioacuten es
Encontrar el elemento menor ( o mayor) de la lista y colocarlo en la primera posicioacuten a continuacioacuten el elemento siguiente menor (o mayor) se lleva a la segunda posicioacuten y asiacute sucesivamente hasta que queda ordenado
Cualquier ordenamiento pos seleccioacuten puede conceptualizarse como un algoritmo que usa una cola de prioridad descendente
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Simulacioacuten del funcionamiento del meacutetodo de seleccioacuten usando un programa de C
Programa-ordenamiento-seleccioacuten
Programa en C del meacutetodo de seleccioacuten
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Idea Baacutesica
Se pasa varias veces a traveacutes del arreglo en forma secuencial
Cada paso consiste en la comparacioacuten de cada elemento con su sucesor y el intercambio de los dos elementos si no estaacuten en el orden correcto
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Simulacioacuten del funcionamiento del meacutetodo de burbuja usando un programa de C
Programa-ordenamiento-burbuja
Programa en C de burbuja
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Analisis de eficiencia-
Hay n-1 comparaciones y pasos en este meacutetodo Por lo que el numero total de comparaciones es O(n )
El numero de intercambios depende del orden original del archivo
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Anaacutelisis de eficiencia-
La uacutenica caracteriacutestica redentora de este ordenamiento es que requiere de poco espacio adicional para guardar el valor temporal para el intercambio y de algunas variables enteras simples
Que es O(n) en el caso de un arreglo ordenado en su totalidad o casi desordenado en su totalidad
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
La idea baacutesica de esta ordenacioacuten es
Encontrar el elemento menor ( o mayor) de la lista y colocarlo en la primera posicioacuten a continuacioacuten el elemento siguiente menor (o mayor) se lleva a la segunda posicioacuten y asiacute sucesivamente hasta que queda ordenado
Cualquier ordenamiento pos seleccioacuten puede conceptualizarse como un algoritmo que usa una cola de prioridad descendente
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Simulacioacuten del funcionamiento del meacutetodo de seleccioacuten usando un programa de C
Programa-ordenamiento-seleccioacuten
Programa en C del meacutetodo de seleccioacuten
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Simulacioacuten del funcionamiento del meacutetodo de burbuja usando un programa de C
Programa-ordenamiento-burbuja
Programa en C de burbuja
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Analisis de eficiencia-
Hay n-1 comparaciones y pasos en este meacutetodo Por lo que el numero total de comparaciones es O(n )
El numero de intercambios depende del orden original del archivo
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Anaacutelisis de eficiencia-
La uacutenica caracteriacutestica redentora de este ordenamiento es que requiere de poco espacio adicional para guardar el valor temporal para el intercambio y de algunas variables enteras simples
Que es O(n) en el caso de un arreglo ordenado en su totalidad o casi desordenado en su totalidad
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
La idea baacutesica de esta ordenacioacuten es
Encontrar el elemento menor ( o mayor) de la lista y colocarlo en la primera posicioacuten a continuacioacuten el elemento siguiente menor (o mayor) se lleva a la segunda posicioacuten y asiacute sucesivamente hasta que queda ordenado
Cualquier ordenamiento pos seleccioacuten puede conceptualizarse como un algoritmo que usa una cola de prioridad descendente
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Simulacioacuten del funcionamiento del meacutetodo de seleccioacuten usando un programa de C
Programa-ordenamiento-seleccioacuten
Programa en C del meacutetodo de seleccioacuten
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Analisis de eficiencia-
Hay n-1 comparaciones y pasos en este meacutetodo Por lo que el numero total de comparaciones es O(n )
El numero de intercambios depende del orden original del archivo
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Anaacutelisis de eficiencia-
La uacutenica caracteriacutestica redentora de este ordenamiento es que requiere de poco espacio adicional para guardar el valor temporal para el intercambio y de algunas variables enteras simples
Que es O(n) en el caso de un arreglo ordenado en su totalidad o casi desordenado en su totalidad
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
La idea baacutesica de esta ordenacioacuten es
Encontrar el elemento menor ( o mayor) de la lista y colocarlo en la primera posicioacuten a continuacioacuten el elemento siguiente menor (o mayor) se lleva a la segunda posicioacuten y asiacute sucesivamente hasta que queda ordenado
Cualquier ordenamiento pos seleccioacuten puede conceptualizarse como un algoritmo que usa una cola de prioridad descendente
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Simulacioacuten del funcionamiento del meacutetodo de seleccioacuten usando un programa de C
Programa-ordenamiento-seleccioacuten
Programa en C del meacutetodo de seleccioacuten
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Burbuja
Anaacutelisis de eficiencia-
La uacutenica caracteriacutestica redentora de este ordenamiento es que requiere de poco espacio adicional para guardar el valor temporal para el intercambio y de algunas variables enteras simples
Que es O(n) en el caso de un arreglo ordenado en su totalidad o casi desordenado en su totalidad
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
La idea baacutesica de esta ordenacioacuten es
Encontrar el elemento menor ( o mayor) de la lista y colocarlo en la primera posicioacuten a continuacioacuten el elemento siguiente menor (o mayor) se lleva a la segunda posicioacuten y asiacute sucesivamente hasta que queda ordenado
Cualquier ordenamiento pos seleccioacuten puede conceptualizarse como un algoritmo que usa una cola de prioridad descendente
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Simulacioacuten del funcionamiento del meacutetodo de seleccioacuten usando un programa de C
Programa-ordenamiento-seleccioacuten
Programa en C del meacutetodo de seleccioacuten
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
La idea baacutesica de esta ordenacioacuten es
Encontrar el elemento menor ( o mayor) de la lista y colocarlo en la primera posicioacuten a continuacioacuten el elemento siguiente menor (o mayor) se lleva a la segunda posicioacuten y asiacute sucesivamente hasta que queda ordenado
Cualquier ordenamiento pos seleccioacuten puede conceptualizarse como un algoritmo que usa una cola de prioridad descendente
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Simulacioacuten del funcionamiento del meacutetodo de seleccioacuten usando un programa de C
Programa-ordenamiento-seleccioacuten
Programa en C del meacutetodo de seleccioacuten
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Simulacioacuten del funcionamiento del meacutetodo de seleccioacuten usando un programa de C
Programa-ordenamiento-seleccioacuten
Programa en C del meacutetodo de seleccioacuten
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
En el primer paso se efectuacutean n-1 comparaciones en el segundo n-2 comparaciones y asiacute sucesivamente O sea que es del orden de O(n2)
El numero de intercambios es siempre n-1
Solo se requiere un poco de memoria adicional para guardar unas variables temporales
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Seleccioacuten
Anaacutelisis de eficiencia-
El ordenamiento puede ser categorizado como mas raacutepido que el de burbuja
No hay mejora si el arreglo esta ordenado o desordenado
A pesar de ser faacutecil de codificar es improbable que se use este meacutetodo solamente cuando son arreglos pequentildeos
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Se le llama de Intercambio por particioacuten
Se define como un proceso recursivo
Se basa en la teacutecnica laquodivide y venceraacutesraquo
Se basa en el meacutetodo de burbuja
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Idea Baacutesica
Se escoge un elemento a la mitad de la lista llamado pivote
Se tienen los elementos lt= a la izquierda del pivote
Se tienen los elementos gt= a la derecha del pivote
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Simulacioacuten del funcionamiento del meacutetodo raacutepido usando un programa de C
Programa-ordenamiento-raacutepido
Programa en C del meacutetodo raacutepido
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Raacutepido o QuickSort
Anaacutelisis de eficiencia
Tiene aparente propiedad de trabajar mejor para elementos desordenados completamente que para elementos semiordenados
En promedio para todos los elementos el meacutetodo hace O(nlogn) comparaciones el cual indica que es eficiente
Para listas grandes consume mas memoria
Se considera el meacutetodo mas eficiente de los algoritmos
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Se le llama de Insercioacuten directa
Es relativamente sencillo
Se basa en intentar construir una lista ordenada
Tambieacuten llamado meacutetodo de la baraja o naipes
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Idea Baacutesica
Hacer comparaciones en donde en cada iteracioacuten forma una lista ordenada
Donde la primera pasada compara los dos primeros elementos y los ordena
La siguiente pasada toma el tercer elemento y lo compara con los dos anteriores colocando a este en su posicioacuten correcta
Y asiacute sucesivamente hasta que queda ordenado
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Simulacioacuten del funcionamiento del meacutetodo de insercioacuten usando un programa de C
Programa-ordenamiento-insercioacuten
Programa en C del meacutetodo de insercioacuten
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Ventajas
Faacutecil de implementar
Requerimientos minimos de memoria
Desventajas
Lento
Realiza numerosas comparaciones
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Insercioacuten
Anaacutelisis de eficiencia
Es de utilidad para listas ordenadas o semiordenadas ya que realiza pocos desplazamientos
Da mejores resultados que el de Seleccioacuten y el de Burbuja
En promedio para todos los elementos el meacutetodo tiene complejidad O(n2) el cual indica que es eficiente
Estabilidad- nunca intercambia datos con claves iguales
Requerimientos de memoria- una variable adicional para los intercambios
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Shell
Versioacuten mejorada de Insercioacuten
Se le conoce como de insercioacuten con decrementos (incrementos decrecientes)
Es una generalizacioacuten de insercioacuten tomando en cuenta que
El ordenamiento por insercioacuten es eficiente si la lista esta casi ordenada
El ordenamiento por insercioacuten es ineficiente porque mueve los valores una posicioacuten a la vez
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Shell Idea baacutesica
Compara elementos no contiguos y separados a una gran distancia
Si los elementos no estaacuten en orden se intercambian
Comienza especificando un salto comparando elementos separados por dicho salto y se intercambian si es necesario
Se divide el intervalo por dos y se repite el proceso
Al finalizar el recorrido del arreglo el salto es de uno y la ordenacioacuten funciona como burbuja
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Shell
Simulacioacuten del funcionamiento del meacutetodo de Shell usando un programa de C
Programa-ordenamiento-shell
Programa en C del meacutetodo shell
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Shell
Anaacutelisis de eficiencia
Los requerimientos reales de tiempo para un ordenamiento especifico depende del numero de elementos en la lista y de sus valores reales
Se ha demostrado que el orden de Shell sort puede aproximarse a O(n(logn) 2) si se usa una secuencia adecuada de incrementos
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Se le llama tambieacuten meacutetodo de intercalacioacuten por fusioacuten
Llamado Merge Sort
Es un algoritmo recursivo con un miacutenimo de comparaciones
Aplicacioacuten claacutesica de la estrategia para resolucioacuten de algoritmos laquodivide y venceraacutesraquo
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Idea baacutesica
Dividir el arreglo en dos listas y ordenar cada una por separado
Cuando estaacuten ordenadas se pueden ir mezclando para asiacute generar la lista ordenada original mas faacutecilmente
La fusioacuten de arreglos permite un meacutetodo de ordenacioacuten raacutepido y potente
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Simulacioacuten del funcionamiento del meacutetodo de Mezcla o Merge Sort usando un programa de C
Programa-ordenamiento-mezcla
Programa en C del meacutetodo mezcla
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Mezcla
Anaacutelisis de eficiencia
Trabaja con una lista auxiliar lo cual consume memoria y obviamente trabajo extra al copiar las listas
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Heap
Algoritmo de ordenacioacuten recursivo
Es no estable
Su complejidad es de O(nlogn)
Se basa en una propiedad de los montiacuteculos en la que la cima contiene el menor elemento (o el mayor) de todos los almacenados en el
Heap- significa cola de prioridades
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Heap
Idea Baacutesica
Consiste en almacenar todos los elementos de la lista en un heap (aacuterbol) y luego extraer el nodo que queda como raiacutez del aacuterbol (cima)
Se realiza en sucesivas iteraciones obteniendo asiacute la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Idea Baacutesica
Se mapea un aacuterbol binario de tal forma en el arreglo que el nodo en la posicioacuten i es el padre de los nodos en las posiciones (2i) y (2i+1)
El valor de un nodo es mayor o igual a los valores de sus hijos El nodo padre tiene el valor mayor de todo su subaacuterbol
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Procedimiento
Convertir la lista en un aacuterbol
Construir una lista ordenada de atraacutes hacia adelante (mayor a menor) haciendo lo siguiente
Sacar el valor maacuteximo en el aacuterbol (el de la posicioacuten 1)
Poner el valor en la lista ordenada
Reconstruir el aacuterbol con un elemento menos
Usar el mismo arreglo para el aacuterbol y la lista ordenada
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Simulacioacuten del funcionamiento del meacutetodo de Monticulo o Heap Sort usando un programa de C
Programa-ordenamiento-heap
Programa en C del meacutetodo heap
Grafico del funcionamiento del Heap sort
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio
5 ALGORITMOS DE ORDENAMIENTO Heap o Montiacuteculo
Anaacutelisis de eficiencia
En el caso promedio el heapsort no es tan eficiente como el qucksort
El heapsort requiere 2 veces mas tiempo que el quicksort
No es muy eficiente para pocos elementos por la creacion del aacuterbol y el calculo de la ubicacioacuten de padres e hijos
Requerimientos- de una sola variable para guardar el valor de intercambio