Thomas Kramer

IT-COW | Algorithmen

Bubblesort-Implementierung in VBS

By Administrator at Februar 01, 2011 14:51
Filed Under: Algorithmen, Programmierung allgemein, Studium, VBScript

Diese Implementierung stellt einen Beitrag zu meinem Studium dar.

 

' Option Explicit bedeutet das die Variablen angegeben werden müssen
' Variablentypen müssen bei VBScript nicht angegeben werden
Option Explicit
' allgemein: _ bedeutet, das die darauffolgende Zeile zur vorangegangenen gehört
Dim fso, File, WFile, WLogFile, sText
Dim FILENAME, WRITE_FILENAME, LOG_FILENAME
Dim i, t, x
Dim Rekursions_Durchlaeufe, Vergleichs_Durchlaeufe, zeit_start, zeit_ende, zeit_aufwand
Dim Feldgroesse
const Zufallszahl_Untergrenze = 0
const Zufallszahl_Obergrenze  = 65535
' Durchlaeufe zuerst auf 0 setzen
Vergleichs_Durchlaeufe=0

' ein dynamisches Array wird mit ReDim statt mit Dim angelegt
ReDim a(1)
Feldgroesse = Inputbox("Bitte geben Sie die Feldgröße n an", "Festlegen der Arraygröße")
ReDim a(Feldgroesse)
generiere_zufallszahlen

' Startzeit für Sortierung nehmen
zeit_start   = time
' Startzeit ausgeben (erstmal auskommentiert)
' x=msgbox("Startzeit für Sortierung, Fenster bitte sofort wegklicken. " & zeit_start,vbOkOnly,"Sortierungsstart")

Bubblesort

' Endzeit für Sortierung nehmen
zeit_ende    = time
' Differenz berechnen, das ist dann die aufgewandte Zeit für die Sortierung
zeit_aufwand = zeit_ende-zeit_start
' Zeitaufwand in hh:mm:ss umrechnen, mit FormatDateTime
' ---> mögliche Variablenwerte bei vBS siehe hier:
' http://www.asphelper.de/referenz/vbscript/formatdatetime.asp
zeit_aufwand = FormatDateTime(zeit_aufwand, vbLongTime)
 
' Ergebnis der Laufzeitanalyse ausgeben - mögliche Schaltflächen für msgbox siehe hier:
' http://www.vbarchiv.net/commands/MsgBox.php
' ("Laufzeitmessung" ist der Titel der Box, der zusammengesetzte String dagegen das, was in der
'   Box angezeigt wird. Der zweite Parameter gibt die Anzahl der angezeigten Schaltflächen an,
'   in x wird die betätigte Schaltfläche als Integerwert zurückgegeben)
x=MsgBox("Rekursions-Durchläufe: " & Rekursions_Durchlaeufe & ", Vergleichs-Durchläufe: " & Vergleichs_Durchlaeufe & _
         ", Endzeit: " & zeit_ende & _
         ", benötigte Zeit für Sortierung: " & zeit_aufwand, _
         vbOkOnly, _
         "Laufzeitmessung")

' --------------------- Generieren und Füllen des Arrays mit Zufallszahlen ------------------------         
sub generiere_zufallszahlen
  Dim i, iZahl

  For i = 0 To ubound(a)
    Randomize
    iZahl = Int((Zufallszahl_Obergrenze - Zufallszahl_Untergrenze + 1) * Rnd + Zufallszahl_Untergrenze)
    a(i)=iZahl
  Next
end sub

' -------------------------------- Bubblesort-Algorithmus -----------------------------------------
' Der Bubblesort wird hartkodiert auf das Array A angewandt
sub bubblesort
  Dim temp, i, j
  for i = 0 to ubound(a)
    for j = i + 1 to ubound(a)
      Vergleichs_Durchlaeufe=Vergleichs_Durchlaeufe+1        
      if a(i) > a(j) then
        temp = a(i)
        a(i) = a(j)
        a(j) = temp
      end if
    next
  next
end sub

 

Angefügt sei auch das erstellte Laufzeitmessungsdokument:

 

Laufzeitmessung_Bubblesort.pdf (40,65 kb)

 

Tag-Wolke

Monats-Liste