2010-11-24 5 views
0

Wie würde man eine Schaltfläche so codieren, dass beim Klicken auf Elemente in Listbox entweder aufsteigend oder absteigend sortiert wird (abhängig von der Schaltfläche geklickt). Es muss nicht mit eingebautem Sort() aber mit einer for Schleife zum Beispiel getan werden. Versucht, die Lösung für das Problem Pseudo-Code, ging so weit wie "jedes Listbox-Element in einem Array mit einer for-Schleife zu speichern".Sortierung Listbox mit String-Elementen aufsteigend und absteigend

Antwort

0

Ich werde Ihnen die Lösung dafür bieten, aber zum Sortieren von Zahlen müssen Sie nur die Vergleichslogik ändern, um festzustellen, welche Zeichenfolge größer als die andere ist.

Schritt-1: Kopieren Sie die Elemente aus der Listbox in ein Array ar. Schritt-2: Verwenden Sie eine schnelle Art:

Private quickArr() As Integer 

Public Sub QuickSort(ByVal arr() As Integer) 
    quickArr = arr 
    DoQuickSort(0, arr.Length - 1) 
End Sub 

Private Sub DoQuickSort(ByVal low As Integer, ByVal high As Integer) 
    Dim i As Integer = low 
    Dim j As Integer = high 
    Dim pivot As Integer = Math.Ceiling(quickArr(((low + high)/2))) 'pivot is the middle element(ceiling) 
    mMoves += 1 
    While i <= j 
     While quickArr(i) < pivot 
      i += 1 
     End While 
     While quickArr(j) > pivot 
      j -= 1 
     End While 
     If i <= j Then 
      Dim t As Integer = quickArr(i) 
      quickArr(i) = quickArr(j) 
      quickArr(j) = t 
      i += 1 
      j -= 1 
      mMoves += 2 
     End If 
    End While 
    If low < j Then 
     DoQuickSort(low, j) 
    End If 
    If i < high Then 
     DoQuickSort(i, high) 
    End If 
End Sub 

in das Listenfeld die resuly Array 3-Kopie zurück

+1

Bitte nicht tun, seine Hausaufgaben für ihn – SLaks

Verwandte Themen