Sortieren mit Selectionsort in einer Lisbox

  • Sonstige

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von m4gic.

    Hi,

    soweit ich weiß bietet die ListBox keine eingebaute Sortiermöglichkeit.

    Schau dir mal diesen Thread an, da gehts um Sortieralgorythmen.


    bye ...

    LaMa5.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de
    Danke, leider ist es nicht das was ich benötige ;/

    ich hatte mir schon gedacht das mit 2 Listboxen zu lösen die 2. sozusagen als zwischen speicher... aber das funktioniert nicht weil ich nicht weis wie ich Sortiere :( leider gibt die MSDN nicht viel her
    Alternativ gibt es ja noch das ListView-Control. Ist zwar etwas umständlicher zu bedienen, aber das Sortieren geht ganz einfach.

    Ob sich der Aufwand bei Dir lohnt weiß ich nicht, das ist wohl immer eine Einzelfallentscheidung.
    ja, das ist die sogenannte Bubble-Sort-Methode. Die ist zwar bei großen Datensätzen sehr, sehr langsam, aber um mal eben 100 Einträge einer Listbox zu sortieren, reicht sie allemal.

    Ich hab dein Modell mal in einen kleinen Code umgestzt und etwas performanter gemacht:

    Quellcode

    1. Private Sub ListSort()
    2. Dim tausch As Boolean
    3. Do 'Schleife so lange durchlaufen, bis alles sortiert ist
    4. tausch = False
    5. For i = 0 To List1.ListCount - 2 'Alle Items durchrattern
    6. If List1.List(i) > List1.List(i + 1) Then 'prüfen, ob getauscht werden muss
    7. 'Tauschen
    8. tmp = List1.List(i + 1)
    9. List1.List(i + 1) = List1.List(i)
    10. List1.List(i) = tmp
    11. tausch = True 'Variable True setzen, um zu zeigen, das in diesem Durchgang getauscht wurde
    12. End If
    13. Next i
    14. Loop Until tausch = False 'Erst nach einem Durchgang ohne Tausch aus der Schleife springen
    15. End Sub


    Einfach mal ausprobieren,
    Jue ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Jue“ ()