48
UNIDAD TEMÁTICA 4: REPRESENTACIÓN Y MANIPULACIÓN DE ESTRUCTURAS: ALGORITMOS DE ORDENAMIENTO Y DE BÚSQUEDA 1. Introducción 2. Estructura de datos 3. Clasificación de Estructuras de datos 4. Estructuras de datos Estáticas.- Arreglos 5. Algoritmos de Ordenamiento: * Burbuja * Shell * Selección * Mezcla * Inserción * Montículo * Rápido

METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

Embed Size (px)

Citation preview

Page 1: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 2: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 3: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 4: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 5: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 6: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 7: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 8: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 9: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 10: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 11: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 12: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 13: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 14: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 15: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 16: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 17: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 18: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 19: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 20: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 21: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 22: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 23: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 24: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 25: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 26: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 27: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 28: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 29: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 30: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (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

Page 31: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 32: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 33: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 34: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 35: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 36: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 37: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 38: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 39: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 40: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 41: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 42: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 43: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 44: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 45: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 46: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 47: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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

Page 48: METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)

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