Почему поразрядная сортировка строк msd работает неправильно
Не могу найти ошибку в коде сортировки msd, она работает неправильно, при вводе строк std::string arr[arrSize] = {"ab", "a", "aaa", "aa"};результат должен быть a aa aaa ab. А у меня получается a aaa aa ab. Помогите найти ошибку.
void MSDSort(std::string *arr, size_t start, size_t end, size_t d = 0) {
size_t arrSize = end - start;
const size_t R = 256;
int count[R + 1]{0};
for (int i = 0; i < arrSize; i++)
count[arr[i][d]+1]++;
for (int r = 0; r < R; r++)
count[r+1]+=count[r];
std::string *aux = new std::string [arrSize];
for (int i = 0; i < arrSize; i++)
aux[count[arr[i][d]]++] = arr[i];
for (int i = 0; i < arrSize; i++)
arr[i] = aux[i];
delete [] aux;
d++;
for (size_t i = 1; i < R; i++) {
if (!(count[i] == 0 && count[i+1] == 0))
MSDSort(arr, start + count[i], start + count[i + 1], d);
}
}
int main(){
const size_t arrSize = 4;
std::string arr[arrSize] = {"ab", "a", "aaa", "aa"};
MSDSort(arr, 0, arrSize);
for (size_t i = 0; i < arrSize; i++)
std::cout << arr[i] << std::endl;
return 0
}