miércoles, 7 de noviembre de 2012

CLASIFICACION DE ALGORITMOS

1.-Ordenamiento Burbuja 

El ordenamiento burbuja  es el algoritmo más facil ya que es conceptual  para iniciar. Consiste en repetir a través de una lista, comparando los elementos  de a  dos en dos. Si un elemento es mayor que el que está en la siguiente posición se intercambian. A continuacion las ventajas y desventajas:

Ventajas: 
·  Una implementación elemental. 
· No necesita otra memoria.
 
Desventajas: 
· Muy pausado . 
· Realiza numerosas comparaciones. 
· Realiza numerosos intercambios. 





2.-Ordenamiento por Selección

 Este algoritmo es algo sencillo ya que busca el componente mas pequeño de la lista

· Lo intercambias con el elemento ubicado en la primera posición de la lista. 
· Buscas el segundo elemento más pequeño de la lista. 
· Lo intercambias con el elemento que ocupa la segunda posición en la lista. 
· Repites este proceso hasta que hayas ordenado toda la lista. 


Ventajas: 
· Fácil implementación. 
· No requiere memoria adicional. 
· Realiza pocos intercambios. 
· Rendimiento constante: poca diferencia entre el peor y el mejor caso. 


Desventajas: 
· Lento. 
· Realiza numerosas comparaciones. 




3.-Ordenamiento por Inserción

En este tipo de algoritmo los elementos que van a ser ordenados son considerados uno a la vez. Cada elemento es INSERTADO en la posición apropiada con respecto al resto de los elementos ya ordenados.

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. 

4.-Ordenamiento Rápido (Quicksort)

Esta es probablemente la técnica más rápida conocida.  El algoritmo fundamental es el siguiente: 
· Eliges un elemento de la lista. 
· Buscas la posición que le corresponde en la lista ordenada.
· Acomodas los elementos de la lista a cada lado del elemento de división, de manera que a un lado queden todos los menores que él y al otro los mayores . En este momento el elemento de división separa la lista en dos sublistas. 
· Realizas esto de forma recursiva para cada sublista mientras éstas tengan un largo mayor que 1. Una vez terminado este proceso todos los elementos estarán ordenados. 
Una idea preliminar para ubicar el elemento de división en su posición final sería contar la cantidad de elementos menores y colocarlo un lugar más arriba. Pero luego habría que mover todos estos elementos a la izquierda del elemento, para que se cumpla la condición y pueda aplicarse la recursividad. Reflexionando un poco más se obtiene un procedimiento mucho más efectivo. Se utilizan dos índices: i, al que llamaremos contador por la izquierda, y j, al que llamaremos contador por la derecha. El algoritmo es éste: 
· Recorres la lista simultáneamente con i y j: por la izquierda con i (desde el primer elemento), y por la derecha con j (desde el último elemento). 
· Cuando lista sea mayor que el elemento de división y lista[j] sea menor los intercambias. 
· Repites esto hasta que se crucen los índices. 
· El punto en que se cruzan los índices es la posición adecuada para colocar el elemento de división, porque sabemos que a un lado los elementos son todos menores y al otro son todos mayores (o habrían sido intercambiados). 
Al finalizar este procedimiento el elemento de división queda en una posición en que todos los elementos a su izquierda son menores que él, y los que están a su derecha son mayores. 
Ventajas: 
· Muy rápido 
· No requiere memoria adicional. 
Desventajas: 
· Implementación un poco más complicada. 
· Recursividad (utiliza muchos recursos). 
· Mucha diferencia entre el peor y el mejor caso. 



No hay comentarios:

Publicar un comentario