Schulprojekt: Sortieralgorithmen

Der Projektauftrag war in ein Visual Basic Programm, diverse Wort- und Zeichensortungsmethoden, zu integrieren

Einige Quellcodeausschnitte
Zeichensortierung mit Quicksort:

''Legendary Quicksort
Public Function quicksort(ByRef chrFeld As Char(), ByVal intLeft As Integer, ByVal intRight As Integer, ByVal blnUmlaut As Boolean)

  Dim intI As Integer = intLeft
  Dim intJ As Integer = intRight
  Dim temp As Char
  Dim charV As Char = chrFeld((intLeft + intRight) \ 2)

  Do
    While compare(charV, chrFeld(intI), blnUmlaut)
      intI += 1
    End While

    While compare(chrFeld(intJ), charV, blnUmlaut)
      intJ -= 1
    End While

  If intI <= intJ Then
    temp = chrFeld(intI)
    chrFeld(intI) = chrFeld(intJ)
    chrFeld(intJ) = temp
    intI += 1
    intJ -= 1
  End If
Loop Until intI > intJ

  If (intLeft < intJ) Then quicksort(chrFeld, intLeft, intJ, blnUmlaut)
  If (intI < intRight) Then quicksort(chrFeld, intI, intRight, blnUmlaut)   Return chrFeld End Function 

Stringvergleich mit eigener Comparefunktion:

 'Funktion zum vergleichen von zwei strings vergleicht entweder via ASCII Tabelle oder 'ordnet die Umlaute logisch an 'Es wird mit Funktionüberladung überprüft welche von den beiden Funktionen aufgerufen wird Private Function compare(ByVal strA As String, ByVal strB As String, ByVal blnUmlaut As Boolean) As Boolean 'Den kürzeren String ermitteln Dim intLengh As Integer = 0
  If strA.Length > strB.Length Then
    strB &= " "
    intLengh = strB.Length
  ElseIf strA.Length < strB.Length Then
    strA &= " "   intLengh = strA.Length
  Else
    intLengh = strA.Length
  End If

  For intCount As Integer = 1 To intLengh Step 1
    Dim blnCountA As Boolean = False
    Dim blnCountB As Boolean = False
    Dim chrTmpA As Char = Mid(strA, intCount, 1)
    Dim chrTmpB As Char = Mid(strB, intCount, 1)

    If blnUmlaut Then
      Select Case chrTmpA
         Case "ä"
           chrTmpA = "a"
           blnCountA = 1
         Case "Ä"
           chrTmpA = "A"
           blnCountA = 1
         Case "ö"
           chrTmpA = "o"
           blnCountA = 1
         Case "Ö"
           chrTmpA = "O"
           blnCountA = 1
         Case "Ü"
           chrTmpA = "U"
           blnCountA = 1
        Case "ü"
          chrTmpA = "u"
          blnCountA = 1
       End Select

       Select Case chrTmpB
          Case "ä"
            chrTmpB = "a"
            blnCountB = 1
          Case "Ä"
            chrTmpB = "A"
            blnCountB = 1
          Case "ö"
            chrTmpB = "o"
            blnCountB = 1
          Case "Ö"
            chrTmpB = "O"
            blnCountB = 1
          Case "ü"
            chrTmpB = "u"
            blnCountB = 1
          Case "Ü"
            chrTmpB = "U"
            blnCountB = 1
          End Select
        End If
    If chrTmpA > chrTmpB Then
    Return 1

  ElseIf chrTmpA = chrTmpB Then
    If blnCountA < blnCountB Then
      Return 1
    ElseIf blnCountA = blnCountB Then 'Wenn die Buchstaben gleich sind: den nächsten wählen
      'Continue For
    Else
      Return 0
    End If
  Else
    Return 0
    End If
Next
Return 0
End Function

Win32 Binary und Quellcode
Für die Ausführung wird .Net 4.0 benötigt.

Dieser Beitrag wurde unter Programmieren, Visual Basic veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*