webForumDet fria alternativet

sortera 2d-array

ASPur ASP

4 svar · 303 visningar · startad av Poffe

Medlem sedan apr. 20022 743 inlägg
Frågan#1

Nån som vet nått smart sätt att storera en 2d-array? har testat 4guysfromrolla's men den sorterar bara de två försa posterna i arrayn samt slänger om värderna, alltså så:

arr(1, 1) blir arr(0, 1)
och arr(0, 1) blir arr(1, 1)

Fast som sagt bara på de två första posterna i arrayn.. nån som vet jaf jag gör för fel (har bara kopierat koden rakt av och satt in på min sida) eller nån som har nått annat knep?

Medlem sedan apr. 20022 743 inlägg
#2

rättelse: den soretrar inte ens, bara slänger om värderna som jag sa

Medlem sedan mars 20002 836 inlägg
#3

jepp, det vet jag :e

Testa denna:

<%
Option Explicit

Dim varTemp
Dim N
Dim varArray(2,3)

varArray(0,0) = 1
varArray(1,0) = "Patrik"
varArray(2,0) = "Berggren"
varArray(0,1) = 4
varArray(1,1) = "Anders"
varArray(2,1) = "Andersson"
varArray(0,2) = 2
varArray(1,2) = "Bertil"
varArray(2,2) = "Bertilsson"
varArray(0,3) = 3
varArray(1,3) = "Ove"
varArray(2,3) = "Ovesson"

%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Sort 2D-Array Ascending or Descending</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>

<BODY bgcolor="#FFFFFF" text="#000000">
<%
'## -- sortera på efternamn.
'## -- för att sortera på id byt 2:an till positionen för id - 0 - eller
'## -- för förnamn byt till den positionen - 1 --
varTemp = Sort2D(varArray, "desc", 2)

If IsArray(varTemp) Then
	For N = 0 TO UBound(varTemp,2)
		Response.Write "ID: " & varTemp(0,N) & " - " & varTemp(1,N) & " " & varTemp(2,N) & "<BR>" 
	Next
End If
%>
</BODY>
</HTML>
<%
Public Function Sort2D(ByVal ArrayToSort, ByVal sSortOrder, ByVal iPos)
	Dim intMaxIndex ' As Integer
	Dim I, X ' As Integer
	Dim varTemp ' As Variant
	Dim intPositions, intPos
	
	intMaxIndex = UBound(ArrayToSort,2)
	
	
	'## -- get total positions in array --
	intPositions = UBound(ArrayToSort,1)
	
	Select Case UCase(sSortOrder)
		Case "ASC"
			'## -- sort ascending --
			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
	
		Case "DESC"
			'## -- sort descending --
			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
	
	End Select
	
	'## -- return sorted array --
	Sort2D = ArrayToSort
End Function

%>

cya,
PatrikB

Medlem sedan apr. 20022 743 inlägg
#4

klockrent! tack så jätte mycket!!

Medlem sedan mars 20002 836 inlägg
#5

vasse'go

cya,
PatrikB

137 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)