holaa un saludo para esta comunidad. bueno soy nuevo por aca y andaba tratando de entener metodo de seleccion, busque en internet algunos algoritmos encontre uno basico creo, pero ese pos_men no se que hondaa, nadamas habia trabajado con burbuja, pero este es nuevo para mii. cualquier ayuda para hacer correr el algoritmo Gracias!
void seleccion (int arreglo[], int TAM)
{
int i;
int temp, pos_men;
for (i=0; i<TAM - 1; i++)
{
/* Buscamos el elemento menor */
pos_men = menor(arreglo, i, TAM);
/* coloca donde corresponde */
temp = arreglo;
arreglo = arreglo [pos_men];
arreglo [pos_men] = temp;
}
}
int menor (int arreglo[], int desde, int TAM)
{
int i, menor;
menor = desde++;
for (i=desde; i<TAM; i++)
if (arreglo < arreglo[menor])
menor = i;
return menor;
}
:rolleyes:
Aquí te dejo un enlace a wikipedia para que veas como funciona:
http://es.wikipedia.org/wiki/Ordenamiento_por_selecci%C3%B3n (http://es.wikipedia.org/wiki/Ordenamiento_por_selecci%C3%B3n)
La idea del Selection Sort es ordenar un arreglo, manteniendo el arreglo ordenado del lado izquierdo, y el desordenado del lado derecho (o como más te guste).
A medida que el algoritmo avanza, el tamaño de la parte ordenada va creciendo, y el de la parte desordenada decreciendo.
Un seudocódigo podría ser el siguiente:
SelectionSort( array desordenado, largo de array ) -> array ordenado
desde i=0 a (largo-2)
pos_men = menor(array, i) // posicion del elemento con menor valor desde i
intercambiar(pos_men,i)
fin-desde
Como verás se busca el elemento más chico (se guarda su posición en pos_men) y se inserta en el primer lugar, luego entre los que quedan por ordenar se busca el más chico y se inserta en el segundo lugar, así hasta el anteúltimo elemento. El último elemento quedará automáticamente ordenado en su lugar.
Si N es el largo del array, para insertar el primer elemento se hacen N-1 comparaciones, para el segundo N-2 y así sucesivamente hasta 1.
Por lo que en total se hacen (N-1 + N-2 + N-3 +...+ 2 + 1) comparaciones, o lo que es lo mismo la sumatoria de los primero N-1 naturales, cuyo valor es:
N(N-1)/2
Espero se haya entendido.
Saludos.