jueves, 1 de diciembre de 2011

Método por Selección




Método por selección 


Los pasos del Método son:
1. Seleccionar el elemento más pequeño de la lista A; intercambiarlo con el primer elemento A[0].Ahora la entrada más pequeña está en la primera posición del vector.

2. Considerar las posiciones de la lista A[1], A[2], A[3]..., seleccionar el elemento más
pequeño e intercambiarlo con A[1].Ahora las dos primeras entradas de A están en orden.

3. Continuar este proceso encontrar o seleccionar el elemento más pequeño de los restantes elementos de la lista, intercambiándolos adecuadamente.

Ejemplo:

La función Selección() ordena una lista o vector de números reales de n elementos. En la pasada i, el proceso de selección explora la sublista A[i] a A[n-1] y fija el índice del elemento más pequeño. Después de terminar la exploración, los elementos A[i] y A[indiceMenor] intercambian las posiciones.

void  Selección (double a[], int n)
{
int indiceMenor, i, j;

for (i = 0; i < n-1; i++)   /* ordenar a[0]..a[n-2] y a[n-1] en cada pasada */
{
indiceMenor = i;    /* comienzo de la exploración en índice i */

for (j = i+1; j < n; j++)      /* j explora la sublista a[i+1]..a[n-1] */
if (a[j] < a[indiceMenor])
indiceMenor = j;
if (i != indiceMenor) /* sitúa el elemento más pequeño en a[i] */
{
double aux = a[i];
a[i] = a[indiceMenor];
a[indiceMenor] = aux ;
}
}
}

Definición de funciones:

void  Selección (double a[], int n)
{
int indiceMenor, i, j;

for (i = 0; i < n-1; i++)  
{
indiceMenor = i;  

for (j = i+1; j < n; j++)
if (a[j] < a[indiceMenor])
indiceMenor = j;
if (i != indiceMenor)
{
double aux = a[i];
a[i] = a[indiceMenor];
a[indiceMenor] = aux ;
}
}
}



void imprimirLista (int a[], int n)
{
int i;
for (i = 0 ; i < n ; i++)
{
char c;
c = (i%10==0)?'\n':' ';
printf("%c%d", c, a[i]);
}
}

void entradaLista (int a[], int n)
{
int i;
printf("\n Entrada de los elementos\n");
for (i = 0 ; i < n ; i++)
{
printf("a[%d] = ",i);
scanf("%d", a+i);
}
}


Prueba de Escritorio:








No hay comentarios:

Publicar un comentario