• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Guida Counting sort

ptm

Utente Master
Autore del topic
13 Maggio 2008
2.716
62
Miglior risposta
0
Algoritmi di ordinamento -> Counting sort

Il counting sort è un algoritmo di ordinamento lineare per l'ordinamento di n interi compresi in un certo intervallo.
Dato un array X di n interi compresi in un intervallo [0,k] abbiamo due fasii:
  1. Utilizzo di un array Y che contiene k contatori tale che Y="numero di volte che il valore i compare nell'array X" (figura 1)
    [*]Ricostruzione di X; l'indice i di Y è il valore da ricopiare, mentre Y è il numero di copie di i. Si scorre Y da sinistra verso destra e, se Y=c, si copia in X il valore i per c volte (figura 2)


lKMtDMo.png

Figura 1

3krqepI.png

Figura 2


Codice

Una possibile implementazione del counting sort è quella che segue
Codice:
Perfavore, Entra oppure Registrati per vedere i codici!
 
  • Like
Reactions: 2 people
Possiamo anche dire che è lineare nella dimensione dell'array se k = O(n), nel senso che la dimensione dell'intervallo dovrebbe essere relativamente piccola rispetto alla dimensione dell'array e che Counting Sort è un algoritmo di ordinamento stabile (cosa importante per l'implementazione di Radix Sort).

Grazie per averlo pubblicato :P