COUNTING SORT

int* counting_sort(int* arr, int k, int size)
{
int *B, *C;
C = (int*) malloc(sizeof(int)*k);
B = (int*) malloc(sizeof(int)*size);

for(int i=0;i<k; i++) C[i] = 0;
// get the count of elements in arr.
// ASSUMPTION: All elements in arr is < k
for(int i=0;i<size;i++) C[arr[i]]++;

for(int i=k-1;i>0;i--) C[i-1] += C[i];

for(int j=0;j<size;j++) {
B[C[arr[j]]] = arr[j];
C[arr[j]]--;
}
return B;
}
void main()
{
int A[] = {2,3,4,1,6,8,7,5};
int *b;
b = counting_sort(A, 9, 8);
// b[0] is garbage, unused entry
std::cout<<b[0]<<std::endl;

// b[1]..b[size] is filled with sorted
std::cout<<b[1];
}

est ce que ce programme est en langage C? si cest oui quelqu'un pourrait me le traduire en francais?
je ne comprends rien et cest urgent :(
je vous remercie

1 réponse

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Bonjour, ← ne pas oublier la politesse c'est important !

    Oui c'est du C.

    Des explications sont disponibles ici :
    http://analgorithmaday.blogspot.com/2011_03_08_archive.html
    1. Bonsoir KX
      je vous remercie pour votre reponse mais mon probleme cest que je ne comprends pas anglais je suis debutante. merci
    2. @pseudomonstreBonjour,
      explications en français

      https://fr.wikipedia.org/wiki/Tri_comptage
    3. Contributeur
      @KX, je dirais du C++ vu la présence de
      std::cout
      , mais il peut bien sûr être aisément remplacé par un
      printf()
      en C.