vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Re: mehrdimensional array sortieren 
Autor: Jin_und
Datum: 28.04.04 21:10

Schau dir mal dieses Beispiel an, es ist zwar für VBScript geschrieben (deshalb keine Typdefinitionen) aber es sollte eigentlich funktionieren:
(Ich hab's in dieser Variante nicht ausprobiert )

' Globales Array mit den Dimensionen
Public Feld(31, 100, 6)
 
Sub Sortieren()
Dim i, j ' Zähler für Zählerschleifen
 
	' Zählschleife i
	For i = 0 To 31
		For j = 0 to 6
			' Sortieren
			QSort i, j, 0, 100
		Next
	Next
End Sub
 
 
 
Sub QSort(ByRef DimA, ByRef DimC, ByVal vStart, ByVal vEnde)
Dim i, j, Vergleich
 
	' Startwerte für Sortierung des Bereichs festlegen
	i = vStart
	j = vEnde
 
	' Feldwert des mittleren Index ermitteln
	vVergleich = Feld(DimA, (vStart + vEnde) \ 2, DimC)
 
	' Schleife bis Zählerstart und Zählerende sich in der Mitte treffen
	Do While i <= j
		' nach dem größten Wert in der linken Hälfte des Bereichs suchen
		Do While Feld(DimA, i, DimC) < vVergleich
			i = i + 1
		Loop
		' nach dem kleinsten Wert in der rechten Hälte des Bereichs suchen
		Do While Feld(DimA, j, DimC) > vVergleich
			j = j - 1
		Loop
		' ist i kleiner gleich j? (Links ist ein größerer Wert als Rechts)
		If i <= j Then
			' ja, also Datenfelder austauschen
			SwapWerte i, j, DimA, DimC
			i = i + 1
			j = j - 1
		End If
	Loop
 
	' ist der Beginn des Bereiches noch kleiner als j?
	If vStart < j Then
		' ja, also QSort mit neuem Bereich aufrufen (linke Hälfte)
		QSort DimA, DimC, vStart, j
	End If
	' ist das Ende des Bereiches noch größer als i?
	If i < vEnde Then
		' ja, also QSort mit neuem Bereich aufrufen (rechte Hälfte)
		QSort DimA, DimC, i, vEnde
	End If
End Sub
 
 
 
Sub SwapWerte(ByRef DimA, ByRef DimC, ByRef Index1, ByRef Index2)
Dim vTemp
 
	' Werte tauschen
	vTemp = Feld(DimA, Index1, DimC)
	Feld(DimA, Index1, DimC) = Feld(DimA, Index2, DimC)
	Feld(DimA, Index2, DimC) = vTemp
End Sub
Gruß
Jin_und

P.S.: Geduld ist eine Tugend.
Nur leider fehlt sie uns (auch mir) immer wieder.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
mehrdimensional array sortieren495frank_web28.04.04 11:54
Re: mehrdimensional array sortieren398frank_web28.04.04 16:51
Re: mehrdimensional array sortieren350Jin_und28.04.04 21:10

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel