Корень Сортировка на массиве строк?
Я искал вокруг, и хотя я понял общую идею использования Radix Sort для алфавитного размещения массива строк, я знаю, что иду в неправильном направлении.
Это то, что я до сих пор:
void radixSort(string* sortMe, int l)
{
queue<string>* sections = new queue<string>[27]; //Have a-z, and also one for strings that are null terminated.
for(int i = 0; i < numElements; i++)
{
if(!(sortMe[i][l] == 32))
sections[sortMe[i][l]-96].push(sortMe[i]); //-96 because the ascii code for a is 97. If, for example a is the character, it will be placed at 1. 0 is left for null characters
}
for(int i =0; i < 26; i++)
{
while(!sections[i].empty())
{
temp.push_back(sections[i].front());
sections[i].pop();
}
}
}
То, что у меня есть, до сих пор сортирует все строки по первому символу, и я знаю, что затем мне нужно пройти и создать подмассивы оставшихся символов и отсортировать их, но как я могу реализовать это эффективно? Строки имеют переменный размер и могут включать пробелы, например:
делит на разделыГлавная улицаштаныпронзенный деколонизирующийглинистыйосевая удовлетворительностьтемпераментныйгиперчувствительностимедведиhairbreadthsкремы горятнепринужденныйХузьерbuggiestмавританцыemanatorsприветствующийблюдо zouavesтащитьсяsolarismsremunerativenessсолюбилизирующийточеныйшейныйoozinesstoastierбодсуффиксбессильный приливdisassimilatedвздохиflirtierэмЭто то, что я нашел, что, кажется, будет полезно:http://algs4.cs.princeton.edu/lectures/51DemoKeyIndexedCounting.pdf