Sortieralgorithmen selber definieren für Strings



  • Hallo,
    da die gängigen Sortieralgorithmen wie Quicksort, Bubble Sorte, Selection Sort nicht für mein Problem zum Sortieren von bestimmten Strings in Frage kommen, wollte ich mir meinen eigenen Algorithmus definieren. Nur wie beginne ich ;-

    Also folgendes Situation :

    "8000" < "8100" < "83100" < "5001" < "8404" < "8406" < "5005" < "8461" < "8422"

    Wie definiere ich denn da dann die Vergleiche ? Wie mache ich das generell ?

    Bodo



  • Wieso können gängig Algorithmen das nicht? Du mußt doch nur definieren was < heißen soll. Das kann ich leider anhand Deines Beispiels auch nicht sehen.



  • Nun ja,

    ich habe in einer Tabelle ( auf Papier ) eine Spalte, in der Ziffern in einer gewissen Reihenfolge angeordnet sind. Diese Anordnung ist fest definiert und muss so befolgt werden. Ein Auszug aus der tabelle :

    Feldkennung Feldbezeichnung
    8000 Satzart
    8100 Satzlänge
    8310 Datum
    0210 Name
    0216 Vorname
    3100 Strasse
    3102 PLZ
    3103 Ort
    8404 Bestellid
    ... ...

    Bei der Sortierung muss dann genau diese Anordnung rauskommen, sprich das Feld mit der Feldkennung 8000 kommt als erstes,8100 als zweites,8310 als drittes, ... 3102 als (n-1),3103 als n, u.s.w. ....

    Die Feldkennungen werden jeweisl als char[5] gespeichert. Nun überlege ich, wie ich da den operator < definiere, damit er mir die Strings genauso sortiert, wie sie in der Tabelle stehen.

    Gruss Bodo



  • Den Strings Zahlen zuordnen?



  • nein, die Zahlen sollen als char[5] in genau dieser Reihenfolge sortiert werden, wie sie in der Tabelle aufgelistet sind.

    Edit :

    Also ich hab ein Struct, der so aufgebaut ist

    struct node{
    
         char FK[5];
         char Feldbezeichnung[40];
         char Feldart[2];
    }
    

    Nun habe ich ein dynamisches Array, in der jeweils Elemente dieser Struktur abgespeichert werden sollen. Anschließend soll diese Liste sortiert werden und zwar genau so, wie in der Tabelle die FK ( Feldkennung) untereinander aufgelistet sind.



  • Du willst es nicht verstehen oder?

    ordnen wir mal zu:

    8000 -> 1
    8100 -> 2
    8310 -> 3
    .
    .
    .

    Eintrag a < Eintrag b, wenn zugeordnete Zahl von a < zugeordnete Zahl von b
    jetzt einfach ein normales sort aufrufen und die Sache ist erledigt.


Anmelden zum Antworten