Unsortiertes String-"Hashtable" in struct einsortieren
-
Hallo!
Ich habe einen String, der unsortierte Einträge einer Hashtabelle beinhaltet (Das Original-Mapping, das mir leider nicht mehr zu Verfügung steht, war Beschreibung:(Länge, Daten)). Der String ist wie folgt aufgebaut:
[Beschreibung Daten1, Länge Daten1, Daten1, Beschreibung Daten2, Länge Daten2, Daten2, Beschreibung Daten3, Länge Daten3, Daten3, ...]
Jetzt möchte ich die unsortierten Einträge in ein struct einsortieren, also in eine vorgegebene Ordnung bringen (sortiert nach dem "Beschreibung Daten X"-Feld). Meine Frage: Was ist der effizienteste Algorithmus dafür? Ich habe mir folgende Möglichkeiten überlegt:
1. Über String iterieren, jedes Mal alle Möglichkeiten der "Beschreibung Daten X" durchgehen und in das struct kopieren. Pseudocode:
for beschreibung, länge, daten in DATEN: switch(beschreibung): case A: meinstruct.a = daten; case B: meinstruct.b = daten; endswitch endfor
oooder
2. String vorsortieren und dann 1:1 in den Speicher kopieren. Pseudocode:
meinstruct = {beschreibung, länge, daten}; viele_structs = mach_genügend_structs(meinstruct); sortierte_daten = sortiere_die_daten(DATEN); 1zu1speicherkopie(viele_structs, sortierte_daten);
Sonst noch irgendwelche Ideen? Gefällt mir beides nicht so. Achja, jede "Beschreibung" kommt nur ein mal vor, wenn man Beschreibung X also bereits verarbeitet hat, muss sie in den nächsten Iterationen nicht mehr beachten.
Danke!
-
Sortieren durch Einfügen, in eine verkettete Liste fällt mir da spontan ein. Beim Aufbauen der Liste werden die Elemente einsortiert. Was das effizienteste ist, hängt nicht zuletzt von der Datenmenge ab und man darf auch beachten, wie nach der Sortierung auf die Daten zugegriffen werden soll.
Gruß,
B.B.