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)