|
-
Nov 16th, 2000, 02:10 PM
#1
Thread Starter
Member
I have a 2-dimensional array:
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
and I want to sort it so that column 3 is in descending numerical order. Any ideas?
-
Nov 16th, 2000, 03:55 PM
#2
One way you could do this is with a classic bubble sort that keys off your 3rd column. Here's an example of how it could work. I'm just building a 6x3 matrix of random numbers here and sorting on the third column - adjust to fit your specific needs:
Code:
<%@ Language=VBScript %>
<HTML>
<HEAD>
<TITLE>test.asp</TITLE>
</HEAD>
<BODY>
<%
Dim varArray(5, 2)
Dim varTemp(0, 2)
Dim strHTML
Dim intIndex
Dim intIndex2
Randomize
' Initialize array with random numbers.
For intIndex = 0 To 5
varArray(intIndex, 0) = Int(Rnd * 100) + 1
varArray(intIndex, 1) = Int(Rnd * 100) + 1
varArray(intIndex, 2) = Int(Rnd * 100) + 1
Next
' Display origninal array.
strHTML = strHTML & "<P>Unsorted:<TABLE BORDER=""1"" CELLPADDING=""2"" CELLSPACING=""0"">" & vbcrlf
For intIndex = 0 To 5
strHTML = strHTML & "<TR>"
strHTML = strHTML & "<TD>" & varArray(intIndex, 0) & "</TD>"
strHTML = strHTML & "<TD>" & varArray(intIndex, 1) & "</TD>"
strHTML = strHTML & "<TD>" & varArray(intIndex, 2) & "</TD>"
strHTML = strHTML & "</TR>" & vbcrlf
Next
strHTML = strHTML & "</TABLE></P>" & vbcrlf
' Sort.
For intIndex = 0 To 4
For intIndex2 = intIndex To 5
If varArray(intIndex, 2) < varArray(intIndex2, 2) Then
varTemp(0, 0) = varArray(intIndex, 0)
varTemp(0, 1) = varArray(intIndex, 1)
varTemp(0, 2) = varArray(intIndex, 2)
varArray(intIndex, 0) = varArray(intIndex2, 0)
varArray(intIndex, 1) = varArray(intIndex2, 1)
varArray(intIndex, 2) = varArray(intIndex2, 2)
varArray(intIndex2, 0) = varTemp(0, 0)
varArray(intIndex2, 1) = varTemp(0, 1)
varArray(intIndex2, 2) = varTemp(0, 2)
End If
Next
Next
' Display sorted array.
strHTML = strHTML & "<P>Sorted:<BR><TABLE BORDER=""1"" CELLPADDING=""2"" CELLSPACING=""0"">" & vbcrlf
For intIndex = 0 To 5
strHTML = strHTML & "<TR>"
strHTML = strHTML & "<TD>" & varArray(intIndex, 0) & "</TD>"
strHTML = strHTML & "<TD>" & varArray(intIndex, 1) & "</TD>"
strHTML = strHTML & "<TD>" & varArray(intIndex, 2) & "</TD>"
strHTML = strHTML & "</TR>" & vbcrlf
Next
strHTML = strHTML & "</TABLE></P>" & vbcrlf
Response.Write strHTML
%>
</BODY>
</HTML>
There might be an easier way to swap the array elements but I'm not aware of it.
Good luck,
Paul
[Edited by PWNettle on 11-17-2000 at 11:11 AM]
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|