Web - Amazon

We provide Linux to the World


We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Counting sort - Wikipedia

Counting sort

Da Wikipedia, l'enciclopedia libera.

Stub informatica
Questa voce è solo un abbozzo (stub). Se puoi, contribuisci adesso a migliorarla secondo le convenzioni di Wikipedia. Per l'elenco completo degli stub di informatica, vedi la relativa categoria.

Il Counting sort è un algoritmo di ordinamento per valori numerici interi con complessità lineare O(n+m), dove n è la lunghezza dell'array e m è pari a max(A)-min(A)+1 (max(A) e min(A) sono rispettivamenti l'elemento più grande e l'elemento più piccolo dell'array) ovvero è il range dei valori contenuti nell'array. Non basato è su confronti e scambi e conviene utilizzarlo quando il valore di m è piccolo rispetto a n, altrimenti risulterebbero più veloci altri algoritmi.

L'algoritmo è semplice ed intuitivo: si calcolano i valori max(A) e min (A) e si prepara un array C di dimensione pari all'intervallo dei valori con C[i] che rappresenta la frequenza dell'elemento i+min(A) nell'array di partenza A. Si visita l'array A aumentando l'elemento di C corrispondente. Dopo si visita l'array C in ordine e si scrivono su A, C[i] copie del valore i+min(A).

Algoritmo in C

void countingSort(int* A, int lengthA)
{  
   //Cacolo degli elementi max e min
   int max=A[0];
   int min=A[0];
   int i=1;
   for(; i<lengthA; i++){
      if(A[i]>max) max=A[i];
      else if(A[i]<min) min=A[i];
   }
   //Costruzione dell'array C
   int lengthC=max-min+1;
   int C[lengthC];                      //crea l'array C
   for(i=0; i<lengthC; i++) C[i]=0;     //inizializza a zero gli elementi di C
   for(i=0; i<lengthA; i++)
      C[A[i]-min]++;                    //aumenta il numero di volte che si è incontrato il valore
   //Ordinamento in base al contenuto dell'array delle frequenze C
   int k=0;                             //indice per l'array A
   for(i=0; i<lengthC; i++){
      int valore=i+min;
      while(C[i]>0){                     //scrive C[i] volte il valore nell'array A
         A[k++]=i+min;
         C[i]--;
      }
   }
}

Algoritmo in Java

void countingSort(int[] A)
{  
   //Cacolo degli elementi max e min
   int max=A[0];
   int min=A[0];
   int i=1;
   for(; i<A.length; i++){
      if(A[i]>max) max=A[i];
      else if(A[i]<min) min=A[i];
   }
   //Costruzione dell'array C
   int[] C=new int[max-min+1];           //crea l'array C
   for(i=0; i<C.length; i++) C[i]=0;    //inizializza a zero gli elementi di C
   for(i=0; i<A.length; i++)
      C[A[i]-min]++;                    //aumenta il numero di volte che si è incontrato il valore
   //Ordinamento in base al contenuto dell'array delle frequenze C
   int k=0;                             //indice per l'array A
   for(i=0; i<C.length; i++){
      int valore=i+min;
      while(C[i]>0){                     //scrive C[i] volte il valore nell'array A
         A[k++]=i+min;
         C[i]--;
      }
   }
}
Our "Network":

Project Gutenberg
https://gutenberg.classicistranieri.com

Encyclopaedia Britannica 1911
https://encyclopaediabritannica.classicistranieri.com

Librivox Audiobooks
https://librivox.classicistranieri.com

Linux Distributions
https://old.classicistranieri.com

Magnatune (MP3 Music)
https://magnatune.classicistranieri.com

Static Wikipedia (June 2008)
https://wikipedia.classicistranieri.com

Static Wikipedia (March 2008)
https://wikipedia2007.classicistranieri.com/mar2008/

Static Wikipedia (2007)
https://wikipedia2007.classicistranieri.com

Static Wikipedia (2006)
https://wikipedia2006.classicistranieri.com

Liber Liber
https://liberliber.classicistranieri.com

ZIM Files for Kiwix
https://zim.classicistranieri.com


Other Websites:

Bach - Goldberg Variations
https://www.goldbergvariations.org

Lazarillo de Tormes
https://www.lazarillodetormes.org

Madame Bovary
https://www.madamebovary.org

Il Fu Mattia Pascal
https://www.mattiapascal.it

The Voice in the Desert
https://www.thevoiceinthedesert.org

Confessione d'un amore fascista
https://www.amorefascista.it

Malinverno
https://www.malinverno.org

Debito formativo
https://www.debitoformativo.it

Adina Spire
https://www.adinaspire.com