VB-Homepage Tipp 226

Werte in Array sortieren

Arrays sind ja sehr nützliche Helfer, wenn es um das Aufbewahren von Variableninhalten geht, denn hier lassen sich, je nach Definition, sehr viele Daten in einem einzigen Array halten. Und nun könnte ja der Fall eintreten, das Sie diese einzelnen Werte in einem Array sortiert benötigen.
Natürlich können Sie die Werte ausgeben und in irgendeiner Listbox sortiert anzeigen, günstiger aber wäre sicher, die Werte gleich im Array sortiert zu erhalten.

Zu mindestens bezieht sich dieser Tipp genau auf diese Herangehensweise.

1. Für einen Test benötigen Sie ein neues Projekt mit einer Form.

2. Außerdem müssen Sie noch zwei Listboxen (List1,List2) und zwei Commandbutton (Command1,Command2) hinzufügen.Ordnen sie die Objekte so an, das Command1 zu List1 und Command2 zu List2 zuordenbar ist.

3. Zur Dimensionierung des Arrays geben Sie unter Allgemein/Deklarationen folgendes an
Dim array(1 To 50)

4. Um das Array erstmal mit Werten zu füllen, tragen Sie unter Form_Load folgendes ein.
For a = 1 To 50
   array(a) = (Rnd * 100) + 1
Next a

5. Um die Listbox 1 (List1) mit den Werten zu füllen, wie sie im Array vorliegen, also in unsortierter Reihenfolge, tragen Sie unter Command1_Click dies ein ....
For a = 1 To 50
   List1.AddItem array(a)
Next a

... und für die Anzeige der sortierten Arraywerte in Listbox 2 (List2) tragen Sie unter Command2_Click das ein.
arraysize = 50 'je nach Dimensionierung des Arrays

For i = (arraysize - 1) To 1 Step -1
   For t = 1 To i
      'If array(t) > array(t + 1) Then 'Aufsteigend
      If array(t) < array(t + 1) Then 'Absteigend
         Temp = array(t)
         array(t) = array(t + 1)
         array(t + 1) = Temp
      End If
   Next t
Next i

For a = 1 To 50
   List2.AddItem array(a)
Next a

6. Damit ist die Definierung unseres Testes abgeschlossen und Sie können über F5 einen Probleauf starten.


Tipp-Download

Quelle : Daniel Wiman / daniel@oden.se

Zurück zur Übersichtsseite