Algoritmos De Ordenamiento

  • Uploaded by: tossedrichi
  • 0
  • 0
  • February 2021
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Algoritmos De Ordenamiento as PDF for free.

More details

  • Words: 2,977
  • Pages: 16
Loading documents preview...
INSTITUTO TECNOLOGICO DE CD.JIMENEZ

REPORTE: TIPOS DE ORDENAMIENTONTO

Daniel Ricardo Hidalgo Torres

Profesor: José Guadalupe Maldonado Carrejo

05/11/2014

REPORTE: TIPOS DE ORDENAMIENTO

Contenido INTRODUCCION ....................................................................................................................................................3 La Ordenación de burbuja (Bubble Sort) .............................................................................................................4 QUE ES… ...........................................................................................................................................................4 Análisis del algoritmo .......................................................................................................................................4 Ventajas Y Desventajas .....................................................................................................................................4 Ejemplo: ............................................................................................................................................................4 ORDENAMIENTO RÁPIDO (quicksort)...................................................................................................................6 QUE ES… ...........................................................................................................................................................6 Análisis del algoritmo .......................................................................................................................................6 Ventajas Y Desventajas .....................................................................................................................................6 Ejemplo: ............................................................................................................................................................7 Ordenamiento Shell (Shell sort) ...........................................................................................................................8 Análisis del algoritmo. ...................................................................................................................................8 Ventajas Y Desventajas:....................................................................................................................................9 Ejemplo: ............................................................................................................................................................9 Ordenamiento Radix...........................................................................................................................................11 QUE ES… .........................................................................................................................................................11 Ventajas Y Desventajas ...................................................................................................................................11 EJEMPLO: ........................................................................................................................................................11 Mezcla Directa ....................................................................................................................................................14 QUE ES… .........................................................................................................................................................14 Algoritmo ........................................................................................................................................................14 Ordenamiento por mezcla equilibrada (o mezcla natural) ................................................................................15 QUE ES… .........................................................................................................................................................15 EJEMPLO: ........................................................................................................................................................15 COMO SABER QUE ALGORITOMO NECESITAMOS… ...........................................................................................16

2

2

INTRODUCCION En este reporte hablaremos de los diferentes algoritmos de ordenamiento de los siguientes: ordenación de burbuja (bubble sort), ordenamiento rápido (quicksort), ordenamiento shell (shell sort), ordenamiento radix, mezcla directa, ordenamiento por mezcla equilibrada (o mezcla natural),ventajas y desventajas ,ejemplos ,usos de cada uno

3

3

La Ordenación de burbuja (Bubble Sort) QUE ES… La Ordenación de burbuja o Bubble Sort es un sencillo algoritmo de ordenamiento. Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado. Es necesario revisar varias veces toda la lista hasta que no se necesiten más intercambios, lo cual significa que la lista está ordenada. Este algoritmo obtiene su nombre de la forma con la que suben por la lista los elementos durante los intercambios, como si fueran pequeñas "burbujas".

Análisis del algoritmo  Estabilidad: Este algoritmo nunca intercambia registros con claves iguales. Por lo tanto es estable.  Requerimientos de Memoria: Este algoritmo sólo requiere de una variable adicional para realizar los intercambios.  Tiempo de Ejecución: El ciclo interno se ejecuta n veces para una lista de n elementos. El ciclo externo también se ejecuta n veces

Ventajas Y Desventajas

VENTAJAS • Fácil implementación. • No requiere memoria adicional.

DESVENTAJAS • Muy lento. • Realiza numerosas comparaciones. • Realiza numerosos intercambios. • Este algoritmo es uno de los más pobres en rendimiento. No es recomendable usarlo. Tan sólo está aquí para que lo conozcas, y porque su sencillez lo hace bueno para empezar. Ya veremos otros mucho mejores.

Ejemplo: Vamos a ver un ejemplo. Esta es nuestra lista: 4-3-5-2-1

4

4

Tenemos 5 elementos. Es decir, TAM toma el valor 5. Comenzamos comparando el primero con el segundo elemento. 4 es mayor que 3, así que intercambiamos. Ahora tenemos: 3-4-5-2-1 Ahora comparamos el segundo con el tercero: 4 es menor que 5, así que no hacemos nada. Continuamos con el tercero y el cuarto: 5 es mayor que 2. Intercambiamos y obtenemos: 3-4-2-5-1 Comparamos el cuarto y el quinto: 5 es mayor que 1. Intercambiamos nuevamente: 5

3-4-2-1-5 Repitiendo este proceso vamos obteniendo los siguientes resultados: 3-2-1-4-5 2-1-3-4-5 1-2-3-4-5

5

ORDENAMIENTO RÁPIDO (quicksort) QUE ES…  El método de ordenamiento Quick Sort es actualmente el más eficiente y veloz de los métodos de ordenación interna.  Es también conocido con el nombre del método rápido y de ordenamiento por partición, en el mundo de habla hispana.  Este método es una mejora sustancial del método de intercambio directo y recibe el nombre de Quick Sort por la velocidad con que ordena los elementos del arreglo. Su autor C.A. Hoare lo bautizó así.  La idea central de este algoritmo consiste en los siguiente: Se toma un elemento x de una posición cualquiera del arreglo. Se trata de ubicar a x en la posición correcta del arreglo, de tal forma que todos los elementos que se encuentran a su izquierda sean menores o iguales a x y todos los elementos que se encuentren a su derecha sean mayores o iguales a x.

Análisis del algoritmo  Estabilidad: No es estable.  Requerimientos de Memoria: No requiere memoria adicional en su forma recursiva. En su forma iterativa la necesita para la pila.  Tiempo de Ejecución: Es el algoritmo mas rápido hasta la fecha.

Ventajas Y Desventajas

VENTAJAS • Muy rápido • No requiere memoria adicional. • Este es un algoritmo que puedes utilizar en la vida real. Es muy eficiente. En general será la mejor opción.

DESVENTAJAS • Implementación un poco más complicada. • Recursividad (utiliza muchos recursos). • Mucha diferencia entre el peor y el mejor caso.

6

6

Ejemplo: Tenemos la siguiente Lista 5-3-7-6-2-1-4 Comenzamos con la lista completa. El elemento divisor será el 4: 5-3-7-6-2-1-4 Comparamos con el 5 por la izquierda y el 1 por la derecha. 5-3-7-6-2-1-4 5 es mayor que cuatro y 1 es menor. Intercambiamos: 1-3-7-6-2-5-4 Avanzamos por la izquierda y la derecha: 1-3-7-6-2-5-4 3 es menor que 4: avanzamos por la izquierda. 2 es menor que 4: nos mantenemos ahí. 1-3-7-6-2-5-4 7 es mayor que 4 y 2 es menor: intercambiamos. 1-3-2-6-7-5-4 Avanzamos por ambos lados: 1-3-2-6-7-5-4 En este momento termina el ciclo principal, porque los índices se cruzaron. Ahora intercambiamos lista[i] con lista[sup] (pasos 16-18): 1-3-2-4-7-5-6 Aplicamos recursivamente a la sublista de la izquierda (índices 0 - 2). Tenemos lo siguiente: 1-3-2 1 es menor que 2: avanzamos por la izquierda. 3 es mayor: avanzamos por la derecha. Como se intercambiaron los índices termina el ciclo. Se intercambia lista[i] con lista[sup]: 1-2-3 Al llamar recursivamente para cada nueva sublista (lista[0]-lista[0] y lista[2]-lista[2]) se retorna sin hacer cambios (condición 5.).Para resumir te muestro cómo va quedando la lista: Segunda sublista: lista[4]-lista[6] 7-5-6 5-7-6 5-6-7 Para cada nueva sublista se retorna sin hacer cambios (se cruzan los índices). Finalmente, al retornar de la primera llamada se tiene el arreglo ordenado: 1-2-3-4-5-6-7

7

7

Ordenamiento Shell (Shell sort) El método Shell es una versión mejorada del método de inserción directa. Este método también se conoce con el nombre de inserción con incrementos crecientes. En el método de ordenación por inserción directa cada elemento se compara para su ubicación correcta en el arreglo, con los elementos que se encuentran en la parte izquierda del mismo. Si el elemento a insertar es más pequeño que el grupo de elementos que se encuentran a su izquierda, es necesario efectuar entonces varias comparaciones antes de su ubicación. 8 Shell propone que las comparaciones entre elementos se efectúen con saltos de mayor tamaño pero con incrementos decrecientes, así, los elementos quedarán ordenados en el arreglo más rápidamente. El Shell sort es una generalización del ordenamiento por inserción, teniendo en cuenta dos observaciones: 1. El ordenamiento por inserción es eficiente si la entrada está "casi ordenada". 2. El ordenamiento por inserción es ineficiente, en general, porque mueve los valores sólo una posición cada vez. El algoritmo Shell sort mejora el ordenamiento por inserción comparando elementos separados por un espacio de varias posiciones. Esto permite que un elemento haga "pasos más grandes" hacia su posición esperada. Los pasos múltiples sobre los datos se hacen con tamaños de espacio cada vez más pequeños. El último paso del Shell sort es un simple ordenamiento por inserción, pero para entonces, ya está garantizado que los datos del vector están casi ordenados. Análisis del algoritmo. 

Estabilidad:



Requerimientos de Memoria: Una variable adicional para realizar los

Este algoritmo nunca intercambia registros con claves iguales. Por lo tanto es estable.

intercambios. 

Tiempo de Ejecución: Para una lista de n elementos el ciclo externo se ejecuta n-1 veces. El ciclo interno se ejecuta como máximo una vez en la primera iteración, 2 veces en la segunda, 3 veces en la tercera, etc. Esto produce una complejidad O(n2).

8

Ventajas Y Desventajas:

Ventajas: • Fácil implementación. • Requerimientos mínimos de memoria.

Desventajas: • Lento. • Realiza numerosas comparaciones. • Este también es un algoritmo lento, pero puede ser de utilidad para listas que están ordenadas o semiordenadas, porque en ese caso realiza muy pocos desplazamientos.

Ejemplo: Generalmente se toma como intervalo inicial n div 2, siendo n la cantidad de elementos de la lista a ordenar, luego se reduce los intervalos a la mitad hasta que el intervalo llegue a ser uno. Cuando la ordenación de la lista se hace con un intervalo de 1 el algoritmo se comporta como el algoritmo de inserción, pero con la ventaja de que al tener una lista casi ordenada, debido a los ordenamientos por intervalos anteriores, el ordenamiento se hará más rápido. Veremos un ejemplo ordenando de menor a mayor (ascendentemente) la siguiente lista de números: 7, 3, 10, 1, 9, 8, 4 La lista tiene 7 elementos (de 0 a 6), con lo cual obtendremos un intervalo inicial de 3, división entera de 7 entre 2 (7 div 2). Desde el elemento 3 se ordena la lista por inserción, hacia la izquierda tomando los elementos de 3 en 3, y así hasta terminar de recorrer la lista. 1er recorrido: intervalo 3, resultado de la división entera de 7 entre 2. Desde el elemento 3. Elementos a ordenar: 7, 1

Se colocan los elementos ordenados por inserción

7 1 7 3 10 1 9 8 4

1 3 10 7 9 8 4

Desde el elemento 4. Elementos a ordenar: 3, 9

Se colocan los elementos ordenados por inserción

9

9

3 9 1 3 10 7 9 8 4 Desde el elemento 5. Elementos a ordenar: 10, 8

1 3 10 7 9 8 4 Se colocan los elementos ordenados por inserción

10 8 1 3 10 7 9 8 4 Desde el elemento 6. Elementos a ordenar: 1, 7, 4

1 3 8 7 9 10 4 Se colocan los elementos ordenados por inserción

1 7 4 1 3 8 7 9 10 4

1 3 8 4 9 10 7

2do recorrido: intervalo 1, resultado de la división entera de 3 entre 2. La lista se ordena con un intervalo de 1, es decir desde el elemento 1 hasta el último elemento de la lista. En esta parte el algoritmo se comporta como en el algoritmo de inserción y la lista se ordena haciendo menos intercambios. 1 3 4 7 8 9 10 Los recorridos terminan cuando el intervalo sea mayor que 0.

10

10

Ordenamiento Radix QUE ES… El algoritmo de Ordenamiento por bases o Radix Sort, consiste en ordenar los números tomando en cuenta el valor relativo que tienen las cifras o dígitos de un número en un determinado sistema de numeración. La característica de este algoritmo está en que no hace comparaciones para ordenar las listas, simplemente se encarga de ir contando o agrupando los números que tengan el mismo valor relativo en determinada cifra

Ventajas Y Desventajas

Ventajas. •El ordenamiento es razonablemente eficiente si el número de dígitos en las llaves no es demasiado grande. •Si las máquinas tienen la ventaja de ordenar los dígitos (sobre todo si están en binario) lo ejecutarían con mucho mayor rapidez de lo que ejecutan una comparación de dos llaves completas.

Características. •Debido a que el ciclo for (k = 1; k <= m; k++) externo se recorre m veces (una para cada dígito) y el ciclo interior n veces (una para cada elemento en el archivo) el ordenamiento es de aproximadamente (m*n). •Si las llaves son complejas (es decir, si casi cada número que puede ser una llave lo es en realidad) m se aproxima a log n, por lo que (m*n) se aproxima a (n log n). •Si la cantidad de dígitos es grande, en ocasiones es más eficiente ordenar el archivo aplicando primero el ordenamiento de raíz a los dígitos más significativos y después utilizando inserción directa sobre el archivo ordenado.

.

EJEMPLO: El método consiste en ir contando la cantidad de veces que aparece un número con determinada cifra para luego acumular los contadores y obtener la nueva posición de los números a ordenar. Contando por la 1era cifra, la menos significativa: 1C8, A81, 401, 19C, 1E2, 177

Conteo

Los números se toman de derecha a izquierda. El 177 se coloca en la Acumulación Posiciones. posición 3, el 1E2, en la posición 2, el del conteo 19C en la posición 5, el 401 en la posición 1, el A81 en la posición 0, y el

11

11

1C8 en la posición 4.

-- 2 > números -- 1 1 > número 2 -- 1 7 > número 8 -- 1 C > número -- 1 > número

-> -1 > 2 -7 > 8 -C > ->

2 3 4 5 6

-> -1 > 2 -7 > 8 -C > ->

10 2 3 4 5

A81 401 1E2 177 1C8 19C 0 1 2 3 4 5 12

Contando por la 2da cifra: A81 ,401 ,1E2 ,177 ,1C8 ,19C

Conteo

-> -0> 7 -8> 9 -C> E -> ->

1 número 1 número 1 número 1 número 1 número 1 número

Los números se toman de derecha a Acumulación izquierda. El 19C se coloca en la Posiciones. del conteo posición 3, el 1C8 en la posición 4, y así sucesivamente. -> -0> 7 -8> 9 -C> E -> ->

1 2 3 4 5 6

-> -0> 7 -8> 9 -C> E -> ->

0 1 2 3 4 5

401 177 A81 19C 1C8 1E2 0 1 2 3 4 5

Contando por la 3ra cifra: 401, 177, A81, 19C, 1C8, 1E2

Conteo

-> 1 -4 > A ->

4 numeros 1 numero 1 numero

Los números se toman de derecha a Acumulación izquierda. El 1E2 se coloca en la Posiciones. del conteo posición 3, el 1C8 en la posición 2, y así sucesivamente. -> 1 4 -4 5 > A 6 ->

3-21 --> 1-0 4 --> 4 A --> 5

177 19C 1C8 1E2 401 A81 0 1 2 3 4 5

12

Para la implementación de este algoritmo no usaremos un sistema de numeración hexadecimal, en su defecto se podría decir que usaremos un sistema de numeración en base 255, la razón es que cuanto más grande sea el sistema de numeración o mejor dicho cuanto más grande sea el arreglo que almacene el conteo y las posiciones de los números, el algoritmo será más rápido.

13

13

Mezcla Directa QUE ES… Este método de llama mezcla porque combina dos o más secuencias en una sola secuencia ordenada por medio de la selección repetida de los componentes accesibles en ese momento. Un arreglo individual puede usarse en lugar de dos secuencias si se considera como de doble extremo. En este caso se tomaran elementos de los dos extremos del arreglo para hacer la mezcla. El destino de los elementos combinados se cambia después de que cada par ha sido ordenado para llenar uniformemente las dos secuencias que son el destino. Después de cada pasada los dos extremos del arreglo intercambian de papel, la fuente se convierte en el nuevo destino y viceversa.

Algoritmo 1.- Inicio 2.- Dividir la secuencia A en dos mitades denominadas B y C. 3.- Mezclar B y C combinando cada elemento en pares ordenados. 4.- Llamar A la secuencia mezclada y repetir los pasos 1 y 2, esta vez combinando los pares en cuádruples ordenados. 5.- Repetir los pasos anteriores duplicando cada vez la longitud de las secuencias combinadas hasta que quede ordenada la secuencia original. 6.- Fin del Algoritmo.

14

14

Ordenamiento por mezcla equilibrada (o mezcla natural) QUE ES… Es una optimización del método de mezcla directa. -Consiste en realizar las particiones tomando secuencias ordenadas de máxima longitud en lugar de secuencias de tamaño fijo previamente determinadas. Luego se realiza la fusión de las secuencias ordenadas, en alternada, sobre dos archivos.

EJEMPLO:

15

Por ejemplo, supongamos los siguientes valores en un fichero de acceso secuencial, que ordenaremos de menor a mayor: 3, 1, 2, 4, 6, 9, 5, 8, 10, 7

Separaremos todos los tramos ordenados de este fichero: [3], [1, 2, 4, 6, 9], [5, 8, 10], [7]

La primera pasada separará los tramos alternándolos en dos ficheros auxiliares: aux1: [3], [5, 8, 10] aux2: [1, 2, 4, 6, 9], [7] Ahora sigue una pasada de mezcla, mezclaremos un tramo de cada fichero auxiliar en un único tramo: mezcla: [1, 2, 3, 4, 6, 9], [5, 7, 8, 10]

Ahora repetimos el proceso, separando los tramos en los ficheros auxiliares: aux1: [1, 2, 3, 4, 6, 9] aux2: [5, 7, 8, 10]

Y de mezclándolos de nuevo: mezcla: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

15

COMO SABER QUE ALGORITOMO NECESITAMOS… Cada algoritmo se comporta de modo diferente de acuerdo a la cantidad y la forma en que se le presenten los datos, entre otras cosas. No existe EL algoritmo de ordenamiento. Sólo existe el mejor para cada caso particular. Debes conocer a fondo el problema que quieres resolver, y aplicar el más adecuado. Aunque hay algunas preguntas que te pueden ayudar a elegir: 

¿Qué grado de orden tendrá la información que vas a manejar? Si la información va a estar casi ordenada y no quieres complicarte, un algoritmo sencillo como el ordenamiento burbuja será suficiente. Si por el contrario los datos van a estar muy desordenados, un algoritmo poderoso como Quicksort puede ser el más indicado. Y si no puedes hacer una presunción sobre el grado de orden de la información, lo mejor será elegir un algoritmo que se comporte de manera similar en cualquiera de estos dos casos extremos.



¿Qué cantidad de datos vas a manipular? Si la cantidad es pequeña, no es necesario utilizar un algoritmo complejo, y es preferible uno de fácil implementación. Una cantidad muy grande puede hacer prohibitivo utilizar un algoritmo que requiera de mucha memoria adicional.



¿Qué tipo de datos quieres ordenar? Algunos algoritmos sólo funcionan con un tipo específico de datos (enteros, enteros positivos, etc.) y otros son generales, es decir, aplicables a cualquier tipo de dato.



¿Qué tamaño tienen los registros de tu lista? Algunos algoritmos realizan múltiples intercambios (burbuja, inserción). Si los registros son de gran tamaño estos intercambios son más lentos.

16

16

Related Documents


More Documents from ""

Algoritmos De Ordenamiento
February 2021 1