Consiste en encontrar el menor de todos los elementos del vector e intercambiarlo con el que está en la primera posición. Luego el segundo mas pequeño, y así sucesivamente hasta ordenarlo todo.
Representación animada del ordenación por selección :
Representación animada del ordenación por selección
ENCONTRAR [j] EL ELEMENTO MÁS PEQUEÑO DE [i + 1:n];
INTERCAMBIAR [j] Y [i];
FIN PROCEDIMIENTO;
letrec mas_pequeno tab comienzo fin =
if(comienzo == fin)then comienzo else
let temp =mas_pequeno tab (comienzo+1) fin in
if tab.(comienzo)> tab.(temp)then temp else comienzo;;
let selection_sort vector =
for actual =0to18do
let p = mas_pequeno vector (actual+1)19in
begin
if p <> actual then
begin
let a = vector.(actual)in
begin
vector.(actual)<- vector.(p);
vector.(p)<- a;
end;
end;
end;
done;
vector;;
type tab =array[1..20]ofinteger;
procedure selection_sort(var vector : tab);
var
temp:integer;
actual, mas_pequeno, j :integer;
begin
for actual:=1to19do
begin
mas_pequeno := actual;
for j:= actual +1to20do
begin
{Encontrar el elemento más pequeño}
if vector[j] < vector[mas_pequeno]then mas_pequeno:= j;
end;
{Guarde el elemento más pequeño en la posición "actual"}
temp:= vector[actual];
vector[actual]:= vector[mas_pequeno];
vector[mas_pequeno]:=temp;
end;
end;
def selection_sort(vector):
nb = len(vector)
for actual inrange(0,nb):
mas_pequeno = actual
for j inrange(actual+1,nb) :
if vector[j]< vector[mas_pequeno] :
mas_pequeno = j
ifminisnot actual :
temp = vector[actual]
vector[actual] = vector[mas_pequeno]
vector[mas_pequeno] = temp
void selection_sort(int*vector,int taille)
{
int actual, mas_pequeno, j, temp;
for(actual =0; actual < taille -1; actual++)
{
mas_pequeno = actual;
for(j = actual 1; j < taille; j++)
if(vector[j]< vector[mas_pequeno])
mas_pequeno = j;
temp = vector[actual];
vector[actual]= vector[mas_pequeno];
vector[mas_pequeno]= temp;
}
}
Use este algoritmo para resolver el pequeño conjunto de la página anterior :
Rendimiento del algoritmo
Cada búsqueda requiere comparar todos los elementos no clasificados, de manera que el número de comparaciones C(n) no depende del orden de los términos, si no del número de términos; por lo que este algoritmo presenta un comportamiento constante independiente del orden de los datos. C(n)= n(n-1)/2. Luego la complejidad es del orden Θ(n2).