Ordenación por SELECCIÓN
El algoritmo de selección también parte de un concepto bastante simple: recorrer todo el vector para buscar el elemento más pequeño y, una vez localizado, colocarlo en la primera posición. El elemento que estuviera ocupando la primera posición debe ser movido al lugar donde estaba el elemento más pequeño, claro, o de lo contrario se sobrescribiría y se perdería para siempre.
Después, haremos lo mismo buscando el segundo elemento más pequeño, moviéndolo a la segunda posición del vector. Luego buscamos el tercer elemento más pequeño, el cuarto, etc. Repitiendo esta búsqueda tantas veces como elementos tenga el vector, habremos conseguido ordenarlo.
A continuación se presenta una posible implementación en C. Observe que también se necesitan dos bucles anidados para culminar el proceso, por lo que el número de pasos necesarios es alrededor de N2 y, por lo tanto, el tiempo de ejecución también crece exponencialmente, como en el caso de la burbuja.
void ordena_vector(int v[LONGITUD_VECTOR])
{
int i, j, minimo, posicion_minimo;
for (i = 0; i < LONGITUD_VECTOR; i++)
{
minimo = v[i];
posicion_minimo = i;
for (j=i; j < LONGITUD_VECTOR; j++)
{
if (v[j] < minimo)
{
minimo = v[j];
posicion_minimo = j;
v[posicion_minimo] = v[i];
v[i] = minimo;
}
}