Está en la página 1de 9

Ordenación por selección

• En éste método, en el i-ésimo paso seleccionamos el


elemento con la llave de menor valor, entre a[i],…,
a[n] y lo intercambiamos con a[i].
• Como resultado, después de i pasadas, el i-ésimo
elemento menor ocupará a[1],…, a[i] en el lugar
ordenado.
• La complejidad del algoritmo es O(n2).

Programación en C 34
Ordenación por selección

Or 44 55 12 42 94 18 06 67
1 06 55 12 42 94 18 44 67
2
3
4
5
6
7

Programación en C 35
Ordenación por selección

Or 44 55 12 42 94 18 06 67
1 06 55 12 42 94 18 44 67
2 06 12 55 42 94 18 44 67
3
4
5
6
7

Programación en C 36
Ordenación por selección

Or 44 55 12 42 94 18 06 67
1 06 55 12 42 94 18 44 67
2 06 12 55 42 94 18 44 67
3 06 12 18 42 94 55 44 67
4
5
6
7

Programación en C 37
Ordenación por selección

Or 44 55 12 42 94 18 06 67
1 06 55 12 42 94 18 44 67
2 06 12 55 42 94 18 44 67
3 06 12 18 42 94 55 44 67
4 06 12 18 42 94 55 44 67
5
6
7

Programación en C 38
Ordenación por selección

Or 44 55 12 42 94 18 06 67
1 06 55 12 42 94 18 44 67
2 06 12 55 42 94 18 44 67
3 06 12 18 42 94 55 44 67
4 06 12 18 42 94 55 44 67
5 06 12 18 42 44 55 94 67
6
7

Programación en C 39
Ordenación por selección

Or 44 55 12 42 94 18 06 67
1 06 55 12 42 94 18 44 67
2 06 12 55 42 94 18 44 67
3 06 12 18 42 94 55 44 67
4 06 12 18 42 94 55 44 67
5 06 12 18 42 44 55 94 67
6 06 12 18 42 44 55 94 67
7

Programación en C 40
Ordenación por selección

Or 44 55 12 42 94 18 06 67
1 06 55 12 42 94 18 44 67
2 06 12 55 42 94 18 44 67
3 06 12 18 42 94 55 44 67
4 06 12 18 42 94 55 44 67
5 06 12 18 42 44 55 94 67
6 06 12 18 42 44 55 94 67
7 06 12 18 42 44 55 67 94

Programación en C 41
Ordenación por selección: código
/************************************************************************\
* Programa: ord_seleccion.c *
* Descripción: Programa que ordena un array mediante el metodo seleccion *
* Autor: Pedro Corcuera *
* Revisión: 1.0 2/02/2008 *
\************************************************************************/
#include <stdio.h>

main()
{
float t,a[]={10.0,8.0,5.5,3.4,3.2,2.5,2.2,1.5};
int i,j,k,n;

n = sizeof(a)/sizeof (float);
for(i = 0; i < n-1; i++)
{
k = i; t = a[i];
for (j = i+1; j < n; j++)
{
if (a[j] < t)
{ t = a[j]; k = j;
}
a[k] = a[i]; a[i] = t;
}
}
for(i = 0; i < n; i++)
printf("%d %10.2f \n",i,a[i]);
}

Programación en C 42

También podría gustarte