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:
y el apa (8? todo lo demás esta bien x3
ResponderEliminarmuy buen trabajo solo falto una imagen (8
ResponderEliminarNo 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...
ResponderEliminarFalta 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