webForumDet fria alternativet

sortera 2d-array

4 svar · 303 visningar · startad av Poffe

PoffeMedlem sedan apr. 20022 935 inlägg
#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?

PoffeMedlem sedan apr. 20022 935 inlägg
#2

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

PatrikBMedlem sedan mars 20002 713 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

PoffeMedlem sedan apr. 20022 935 inlägg
#4

klockrent! tack så jätte mycket!!

PatrikBMedlem sedan mars 20002 713 inlägg
#5

vasse'go

cya,
PatrikB

Genererad på 369 ms · cache AV · v20260730165559-full.f96bc7eb