[Erledigt]VB Script - Bubble Sort funktioniert nicht

Diskutiere [Erledigt]VB Script - Bubble Sort funktioniert nicht im Programmierung Forum im Bereich Software Forum; Ich hab ein kleines Skript geschrieben. Dabei wollte ich auch ein Array sortieren, weil dies nicht funktioniert hab ich ein Test Array angelegt...
Z

zonk123

Threadstarter
Mitglied seit
25.01.2007
Beiträge
44
Ich hab ein kleines Skript geschrieben.
Dabei wollte ich auch ein Array sortieren, weil dies nicht funktioniert hab ich ein Test Array angelegt und versucht zu sortieren.
Ich konnte den Fehler nicht finden, aber er liegt irgendwo in der bubblesort Funktion.

Ich hoffe jemand kann mir helfen.

Code:
Dim myArray(3)
myArray(0) = 4
myArray(1) = 5
myArray(2) = 1
bubblesort(myArray)
MsgBox myArray(0) & myArray(1) & myArray(2) ' Ausgabe 4 5 1

Function bubblesort(arrSortieren)
		For i = 0 To UBound(arrSortieren)
			For j = i + 1 To UBound(arrSortieren)
				If arrSortieren(i) > arrSortieren(j) Then
					arrTemp = arrSortieren(i)
					arrSortieren(i) = arrSortieren(j)
					arrSortieren(j) = arrTemp
				End If
			Next
		Next
		MsgBox arrSortieren(0) & arrSortieren(1) & arrSortieren(2) ' Ausgabe 1 4
		bubblesort = arrSortieren
End Function
 
Zuletzt bearbeitet:
L

LauxAimoEwa

Mitglied seit
04.12.2006
Beiträge
2.003
Code:
...
		For i = 0 To UBound(arrSortieren)
			For j = i + 1 To UBound(arrSortieren)
				If arrSortieren(i) > arrSortieren(j) Then
					arrTemp = arrSortieren(i)
					arrSortieren(i) = arrSortieren(j)
					arrSortieren(j) = arrTemp
				End If
			Next
		Next
Ich schätze der Fehler liegt in der zweiten Schleife. Ist i=2 dann beginnt j mit i+1 (also 3) und möchte bis 2 gehen.

Mach am besten ne Abfrage, ob (if i+1 > Ubound(arrSortieren)) then exit for) - dann könnte es klappen...
 
snadboy

snadboy

Mitglied seit
27.11.2004
Beiträge
1.408
Standort
Herten
Die 2. Schleife ist eigentlich unnötig.
Hier ist ein funktionierender Code:

Code:
Do
setSortiert = True
  For i = 0 To UBound(arrSortieren)
    If arrSortieren(i) > arrSortieren(i+1) Then
      Temp = arrSortieren(i)
      arrSortieren(i) = arrSortieren(i+1)
      arrSortieren(i+1) = Temp
      Sortiert = False
    End If
  Next i
Loop Until setSortiert
Aber wieso benutzt du bubblesort?? Der ist unheimlich langsam...!
 
Z

zonk123

Threadstarter
Mitglied seit
25.01.2007
Beiträge
44
@snadboy funktioniert nicht, da eine Fehlermeldung kommt der Index liegt ausserhalb des Bereichs.

Das mit Wikipedia werde ich gleich mal testen.
 
Z

zonk123

Threadstarter
Mitglied seit
25.01.2007
Beiträge
44
Ok hab es jetzt soweit das die Zahlen richtig geordnet werden, allerdings übergibt die Funktion die Werte nicht richtig zurück.

Code:
Dim myArray(2)
myArray(0) = 4
myArray(1) = 5
myArray(2) = 1
BubbleSort(myArray)
MsgBox myArray(0) & myArray(1) & myArray(2) ' Ausgabe 4 5 1

Function BubbleSort(a)
    Dim i, n, Temp
    Dim Sortiert
    n = UBound(a)
	Do
        Sortiert = True
        For i = 0 To n - 1
            If a(i) > a(i + 1) Then
                Temp = a(i)
                a(i) = a(i + 1)
                a(i + 1) = Temp
                Sortiert = False
            End If
        Next
	Loop Until Sortiert
	MsgBox a(0) & a(1) & a(2) 'Ausgabe 1 4 5
	BubbleSort = a
End Function
 
snadboy

snadboy

Mitglied seit
27.11.2004
Beiträge
1.408
Standort
Herten
Wie denn auch, wenn a keinen Wert hat, bzw. nicht dein Array sondern a sortiert wird.

Ist übrigens fast die gleiche Schleife die ich dir auch gepostet habe...
 
Z

zonk123

Threadstarter
Mitglied seit
25.01.2007
Beiträge
44
Habs doch noch geschafft;)

Code:
Sub BubbleSort(ByRef a)
    n = UBound(a)
	Do
        Sortiert = True
        For i = 0 To n - 1
            If a(i) > a(i + 1) Then
                Temp = a(i)
                a(i) = a(i + 1)
                a(i + 1) = Temp
                Sortiert = False
            End If
        Next
	Loop Until Sortiert
End Sub
Hiermit funktionierts bestens :D

Danke für alle Hilfe und Anstösse.
 
Thema:

[Erledigt]VB Script - Bubble Sort funktioniert nicht

[Erledigt]VB Script - Bubble Sort funktioniert nicht - Ähnliche Themen

  • [Erledigt]VB-Script - Zelle als Hyperlink formatieren

    [Erledigt]VB-Script - Zelle als Hyperlink formatieren: Neuer Tag, neues Problem und somit bitte ich euch um Hilfe Der Titel sagt eigentlich schon alles objExcel.Cells(d, 4).Value = strInstallLocation...
  • [Erledigt]VB-Script - Textausrichtung in Excel verändern

    [Erledigt]VB-Script - Textausrichtung in Excel verändern: Neuer Tag, neues Problem und zwar erzeuge ich per Skript ein Excel-Sheet und darin eine kleine Auflistung. Nun würde ich das ganze gerne noch...
  • [Erledigt]VB-Script - Win32_Product Software auslesen

    [Erledigt]VB-Script - Win32_Product Software auslesen: Hallo zusammen wollte mir ein Skript basteln, mit dem ich die installierte Software einfach und bequem auslesen kann. Nun ist mir aber aufgefallen...
  • [erledigt]Remote Desktop automatisieren und Scripte erstellen!

    [erledigt]Remote Desktop automatisieren und Scripte erstellen!: Hallo, ich habe einen Windows Server 2003 welcher einen TerminalServer installiert hat. An ihm hängen mehrere Win2k Clients mit geringer...
  • [Erledigt]VB-Script - Zahlen in einem Array überprüfen

    [Erledigt]VB-Script - Zahlen in einem Array überprüfen: Neuer Tag neues Problem;) Also ich hab in einem Array Zufahlszahlen gespeichert, nun darf aber keine Zahl doppelt vorkommen, deshalb hab ich ein...
  • Ähnliche Themen

    Oben