viernes, 18 de septiembre de 2015

Algoritmo de Ordenación por selección


Este algoritmo Consiste en encontrar el menor de todos los elementos del arreglo o vector e intercambiarlo con el que está en la primera posición.  Luego el segundo más pequeño, y así sucesivamente hasta ordenarlo todo. 


Como todo algoritmo, es una secuencia de pasos, a continuación se presentan las diferentes condiciones a seguir en Ordenación por selección:
      Buscar el mínimo elemento de la lista
      Intercambiarlo con el primero
      Buscar el siguiente mínimo en el resto de la lista
      Intercambiarlo con el segundo
      Y en general: Buscar el mínimo elemento entre una posición i y el final de la lista. Intercambiar el mínimo con el elemento de la posición i.


Para una representación un poco más visual se presenta este ejemplo de pseudocódigo:
para i=1 hasta n-1;
mínimo = i;
para j=i+1
hasta n
si lista[j] < lista[mínimo]
entonces mínimo = j ;
fin si
fin para intercambiar(lista[i], lista[mínimo ])
fin para.


Algunas de las ventajas de utilizar este Algoritmo son:
ü  Es fácil su implementación.
ü  No requiere memoria adicional.
ü   Realiza pocos intercambios.
ü  Tiene un rendimiento constante, pues existe poca diferencia entre el peor y el mejor caso.
Al igual que ventajas tiene desventajas:
ü  Es lento y poco eficiente cuando se usa en listas grandes o medianas.
ü   Realiza numerosas comparaciones.
 




Ejemplo de una codificación del Algoritmo por Ordenación de selección:
template <class T>void ordena_seleccion(vector<T>& v){
for(int i = 0; i < v.size() - 1; ++i)
{
int min = i;
for (int c = i + 1; c < v.size(); ++c) {
if (v[min] > v[c]) min = c;
}
T aux = v[i];
v[i] = v[min];
v[min] = aux;
}}

Referencias:


4 comentarios:

  1. y el apa (8? todo lo demás esta bien x3

    ResponderEliminar
  2. muy buen trabajo solo falto una imagen (8

    ResponderEliminar
  3. No podrías colocar una imagen de como trabaja el método?... o al menos escribir un ejemplo???... ayudaría a que se comprenda mejor el método...

    ResponderEliminar
  4. Falta ilustrar un poco mas como funciona con un bonito ejemplo. Pero fuera de eso creo que es el método más claro de todos. Es de una mentalidad muy simple de ir ordenando casi manualmente. Me.parece que seria una pesima.idea para arreglos largos porque tendria que nevagar todo el arreglo muchas veces.

    ResponderEliminar