Template:Da cancellare semplificata Template:Da aiutare mese Template:Wik Template:Stub informatica

Il Partition Sort è un metodo di ordinamento degli elementi di un vettore.

Il partizionamento consiste nel ordinadare un array di numeri secondo un dato elemento.

L'algoritmo esegue le seguenti operazioni:

  • Due indici i e j,il primo che parte dall'inizio dell'array,l'altro dalla fine che si fermano solo quando individuano elementi non in posizione corretta.
  • Individuati i numeri, essi vengono scambiati.
  • L'algoritmo ovviamente termina quando l'array è stato partizionato oppure quando esso lo era già in partenza.

La complessità di questo algoritmo è:

  • Caso migliore: n confronti
  • Caso peggiore: n confronti + n/2 scambi

Di seguito riporto l'algoritmo scritto in C:


void PartitioSort(int *a,int n, int x) {
  int i = 0;
  int j = n-1;
  int k; //indici e variabile di supporto  
  while (a[i]<=x && i<j)
        i=i+1;
  while (a[j]>x && i<j)
        j=j-1;
  while (i<j) {
    k=a[j];
    a[j]=a[i];
    a[i]=k;
    i=i+1;
    j=j-1;
    while (a[i]<=x && i<j)
          i=i+1;
    while (a[j]>x && i<j)
          {j=j-1;}
  
  }
  return;
}