webForumDet fria alternativet

2D-Array sorteringsproblem

ASPur ASP

6 svar · 217 visningar · startad av nill

Medlem sedan okt. 2001387 inlägg
Frågan#1

Jag hittade en sorteringsalgoritm till min Array här på webforum. Den funkar ganska bra men har ett stort problem med det.
Den sorterar så här:

     Staeger     
     Trituz 
     Vladrimir     
     XitR     
     abriz\_    
     alkaida   
     drillen     
     error    
     fet johan  

alltså börjar om igen. Koden ser ut såhär:

Private Function Sort2D(ByVal ArrayToSort, ByVal iPos)
	Dim intMaxIndex
	Dim I, X
	Dim varTemp
	Dim intPositions, intPos
	intMaxIndex = UBound(ArrayToSort,2)
	intPositions = UBound(ArrayToSort,1)
	For I = 0 To intMaxIndex
		For X = (I + 1) To intMaxIndex
			If ArrayToSort(iPos, I) > ArrayToSort(iPos,X) Then
				For intPos  = 0 To intPositions
					varTemp = ArrayToSort(intPos, I)
					ArrayToSort(intPos, I) = ArrayToSort(intPos, X)
					ArrayToSort(intPos, X) = varTemp
				Next
			End If
		Next
	Next
	Sort2D = ArrayToSort
End Function
Medlem sedan mars 20002 836 inlägg
#2

Argumentet iPos bestämmer vilken av positionerna i den 2-dimensionella arrayen som det ska sorteras på.

Sorterar du på rätt position???

visa lite mer kod, kod där du anropar denna funktion.

cya,
PatrikB

Medlem sedan okt. 2001387 inlägg
#3

Här är själva Array'n:

Arr(0, q) = RecSet("ID")			
Arr(1, q) = RecSet("nick")
Arr(2, q) = RecSet("titel")
Arr(3, q) = RecSet("gang")

och så sorteringsanropet

Arr = Sort2D(Arr, 1)
Medlem sedan mars 20002 836 inlägg
#4

återkommer ......

cya,
PatrikB

Medlem sedan mars 20002 836 inlägg
#5

har nu kikat på den igen ..... det är ett LCase som fattas i sorteringen:

Private Function Sort2D(ByVal ArrayToSort, ByVal iPos)
	Dim intMaxIndex
	Dim I, X
	Dim varTemp
	Dim intPositions, intPos
	intMaxIndex = UBound(ArrayToSort,2)
	intPositions = UBound(ArrayToSort,1)
	For I = 0 To intMaxIndex
		For X = (I + 1) To intMaxIndex
			If [b]LCase[/b](ArrayToSort(iPos, I)) > [b]LCase[/b](ArrayToSort(iPos,X)) Then
				For intPos  = 0 To intPositions
					varTemp = ArrayToSort(intPos, I)
					ArrayToSort(intPos, I) = ArrayToSort(intPos, X)
					ArrayToSort(intPos, X) = varTemp
				Next
			End If
		Next
	Next
	Sort2D = ArrayToSort
End Function

nu bör det funka

cya,
PatrikB

Medlem sedan mars 20002 836 inlägg
#6

fast ... borde du inte sortera i din sql-fråga???? klart mycket effektivare

cya,
PatrikB

Medlem sedan okt. 2001387 inlägg
#7

tack så mycket. fungerade bra nu.

SQL sortering är ju mycket bättre men ser inget sätt att använda det här.Vi ska nog inte gå in på det närmare om du inte är jätteintresserade. Har att göra med att jag lagrar många ID i en kolumn och sen då hämtar informationen till varje ID.

131 ms totalt · 3 externa anrop · v20260731065814-full.9823c0c5
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)