Announcement

Collapse
No announcement yet.

Arrays natürlich sortieren sortieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Arrays natürlich sortieren sortieren

    Hallo zusammen,

    ich benötige die Syntax, um ein eindimensionales Array zu sortieren.
    Bisher versuche ich es mit TextSort.Sort(0, AnzahlEintraege, Nothing),
    doch leider verursacht das bei Zahlen keine natürlich Sortierung.

    Statt 1,2,3,4...10,11 wird nach 1,10,11...2,20 sortiert.

    Ich bin mir sicher es ist ganz einfach, nur habe ich weder in der Hilfe noch in vier VB.NET Büchern sinnvolles dazu gefunden. Der IComparable-Kram verwirrt mich nur.

    Danke für Eure Hilfe

    Gruß
    Volker

  • #2
    Array sortieren

    Hi,

    - soweit ich weiß -
    Bei einem Array mit Standard-Datentypen ist die Sortierreihenfolge klar, es muß also keine IComparable-Schnittstelle angelegt werden.

    Probiere es doch mal analog zu folgendem kleinen Beispiel:

    dim x(100) as double
    Array.Sort(x)

    Comment


    • #3
      Es handelt sich nicht nur um Zahlen

      Danke für den Hinweis.
      Allerdings ist mein Problem ein anderes.

      Ich habe Zeilen, bei dem die Felder mit Semikolon getrennt sind.
      Diese Zeilen sind Strings.
      Ich will nun nach einem bestimmten Feld in diesem String sortieren.
      Dazu kopiere ich das Feld aus dem String und setze es vor die Zeile.
      Das alles sortiere ich dann und entferne nachher das vorangestellte Feld.

      Das funktioniert wie gesagt so lange gut, wie ich keine natürliche Zahlensortierung wünsche.

      Kann ich nicht beim Sortieren sagen, er soll nur das erste Feld (ist immer mit fester Feldlänge) berücksichtigen?

      Comment


      • #4
        Ja dann

        Dann würde ich das so machen:
        Ich kann nicht alles ausdetaillieren, sondern nur die Idee darstellen:

        Zuerst mache ich Pärchen aus Stringdarstellung und Wert:

        class Pärchen
        public stringdarstellung as string
        public wert as integer
        end class

        Dann die konkreten Pärchen-Objekte erstellen, z.B. als Array.


        Dann erstelle ich eine SortedList
        dim S as new SortedList (in der Hilfe nachschauen)

        Dann füge ich die Pärchen-Objekte in die Liste hinzu:
        S.Add( PärchenObjekt.wert, PärchenObjekt )

        Die SortedList fügt die Elemente von Haus aus sortiert hinzu.
        Mit einer Foreach-Schleife können die Elemente sortiert abgefragt werden.


        - oder -
        statt der SortedList, verwende eine IComparable Schnittstelle für die Klasse Pärchen und sortiere mit Array.Sort.
        Manchmal kommt man einfach nicht herum etwas mehr Quellcode zu schreiben, für ausgefallene Wünsche gibt es eben keine kurzen Standard-Antworten.

        Comment

        Working...
        X