Radix-Sort ein Array von Zeichenfolgen?

Habe ich schon seit Jahren herum, und während ich habe herausgefunden, das der Allgemeinen Idee der Verwendung von Radix-Sortierung alphabetisch ein array von strings, ich weiß, ich werde die falsche Richtung.

Dies ist, was ich habe, so weit:

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();
        }
    }
}

Was ich bisher sortiert werden alle Zeichenfolgen, die durch das erste Zeichen, und ich weiß, dass ich dann zu Durchlaufen haben und machen subarrays der verbleibenden Zeichen und Sortieren Sie diese, aber wie kann ich es effizient umsetzen? Die Saiten sind von variabler Größe und können Leerzeichen, zum Beispiel:

  • unterteilt
  • main street
  • Hose
  • aufgespießt decolonizing
  • tonig
  • axial satisfactoriness
  • temperamentvoll
  • hypersensitiveness
  • trägt
  • hairbreadths
  • Cremes überspannungen
  • unlaboured
  • hoosier
  • buggiest
  • Mauretanier
  • emanators
  • acclaiming
  • zouaves dishpan
  • Latschen
  • solarisms
  • remunerativeness
  • solubilizing
  • gemeißelt
  • Gurgel
  • ooziness
  • toastier
  • baud
  • Suffix
  • machtlos treiben
  • disassimilated
  • keucht
  • flirtier
  • uh

Dies ist etwas, das ich gefunden, dass scheint, wie es von nutzen sein:
http://algs4.cs.princeton.edu/lectures/51DemoKeyIndexedCounting.pdf

  • Radix-sort ist nicht gut geeignet für Elemente, die in unterschiedlicher Größe.
  • Ja, leider ist dies der Letzte Teil eines Projekts, das ich habe, wo ich die Implementierung der verschiedenen Sortier-algorithmen und vergleichen deren Ausführungszeit. Ich auf jeden Fall tun, wünschte, ich könnte eine andere Methode verwenden!
  • Ich habe 3 Vorschläge. 1: die Möglichkeit für mehr als nur die 27 möglichen Eingaben. Zum Beispiel haben Sie Räume, in einige der Elemente zu Sortieren. 2: verwenden Sie Rekursion. 3: erkennen, dass eine Eingabe von nur einem element oder weniger bereits sortiert.
InformationsquelleAutor Kavix0 | 2014-04-13
Schreibe einen Kommentar