Selection sort

algoritmo di ordinamento che opera in place

L'ordinamento per selezione (selection sort) è un algoritmo di ordinamento che opera in modo simile all'ordinamento per inserzione; seleziona il numero minore nella sequenza di partenza e lo sposta nella sequenza ordinata.

La complessità di tale algoritmo è dell'ordine di

Esempio di implementazione in C

selection() {
  int i, j, min, t; 

  for (i=0; i < N-1; i++) {
    min = i;

    for (j= i + 1; j <= N; j++)
      if (a[j] < a[min]) min = j;

    t = a[min]; a[min] = a[i]; a[i] = t;
  }
}
 

Esempio di programma in Pascal

program SelectionSort(input,output);
const dim=20;
var a: array[1..dim] of integer;
    n,i,j,k,min,aux:integer;
begin
 // Creazione vettore di n elementi (con 1<=n<=dim)
 for i:=1 to n do begin
  min:=a[i];
  k:=i;
  for j:=(i+1) to n do
   if a[j]<min then begin
    min:=a[j];
    k:=j;
   end;
   aux:=a[i];
   a[i]:=a[k];
   a[k]:=aux;
  end;
 // Stampa del vettore
 readln;
end;