Nel frammento di codice sottostante viene presentato l’algoritmo di ordinamento Selection Sort. L’algoritmo Selection Sort è un algoritmo di ordinamento che opera facilmente mediante ricorsione. L’algoritmo opera selezionando sempre l’elemento massimo o l’elemento minimo all’interno di una data sequenza e posizionano quest’ultimo elemento all’inizio o alla fine del vettore.

#include <stdlib.h>
#include <stdio.h>
#include <limits.h>

#define scambia(a, b, t) {(t)=(a); (a)=(b); (b)=(t);}

void stampa(int *a, int n);
void selectionSort(int *a, int n);

int main(void) {
  int a[10] = {5, 1, 3, 99, 45, 63, 21, 34, 0, 84}; // elementi da ordinare
  int n = 10;  // numero di elementi

  stampa(a, n);
  selectionSort(a, n);
  stampa(a, n);

  return 1;
}

// stampo tutti i valori presenti nel vettore
void stampa(int *a, int n) {
  int i;

  for(i=0; i<n; i++)
    printf("%d ", a[i]);

  printf("\n");
}

// passo alla funzione il puntatore al vettore da ordinare e la sua dimensione
void selectionSort(int *a, int n) {
  int i, t, i_max, max = INT_MIN;

  // identifico il numero maggiore nell'intervallo
  for(i=0; i<n; i++) {
    if(a[i]>max) {
      i_max = i;
      max = a[i];
    }
  }

  // a meno che non sia già in posizione finale, sposto il massimo alla fine del vettore
  if(i_max != n-1) {
    scambia(a[n-1], a[i_max], t);
  }

  /* se non ho considerato tutta la lunghezza del vettore, richiamo ricorsivamente la funzione
sull'intervallo minore successivo */
  if(n>1) {
    selectionSort(a, n-1);
  }
}

Per maggiori informazioni circa la sintassi del linguaggio si faccia riferimento alla guida al Linguaggio C.