Sortowanie stringów - kubełkowe - co poprawić?

0

Witam,

Czy ktoś wie jak przerobić poniższy kod, aby sortował stringi a nie liczby? Może zna ktoś gotowy kod kubełkowego sortowania stringów?

#include <cstdlib>
#include <iostream>

void bucketSort(int array[], int n) {
  int i, j;
  int count[n];
  for(i=0; i < n; i++) {
    count[i] = 0;
  }

  for(i=0; i < n; i++) {
    (count[array[i]])++;
  }

  for(i=0,j=0; i < n; i++) {
    for(; count[i]>0; (count[i])--) {
      array[j++] = i;
    }
  }

}


int main() {
  int array[] = {1,3,4,6,4,2,9,1,2,9};
  int n = 10;
  int i;

  for (i = 0;i < n;i++) {
    printf("%d ", array[i]);
  }
  printf("\n");


  bucketSort(array, n);

  for (i = 0;i < n;i++) {
    printf("%d ", array[i]);
  }
  printf("\n");


  return 0;
}
0

Zauważ, że żeby sortować kubełkowo musisz znać zakres elementów sortowanych, żeby stworzyć odpowiednią tablicę. Załóżmy, że w alfabecie jest 26 znaków wtedy żeby posortować stringi o długości 10 musiałbyś mieć tablice o rozmiarze większym niż 26^10. Do sortowania stringów możesz użyć sortowania pozycyjnego. A jeżeli chcesz konieczni sortowanie kubełkowe to najlepiej na kontenerze map z STL, lecz w tym przypadku wstawianie nie jest w czasie stałym lecz w czasie log n.

1 użytkowników online, w tym zalogowanych: 0, gości: 1