Avatar billede clausn Nybegynder
27. juli 2004 - 16:30 Der er 4 kommentarer og
1 løsning

Sortere på dato

Hej eksperter,

Nu har jeg prøvet lidt frem og tilbage og er ikke rigtigt kommet på en løsning.

Jeg har et arrary med nogle datoer:

Dim myArray()
ReDim myArray(0,6)

myArray(0,0) = "01-01-2004"
myArray(0,1) = "25-01-2004"
myArray(0,2) = "02-02-2004"
myArray(0,3) = "05-05-2004"
myArray(0,4) = "30-05-2004"
myArray(0,5) = "28-02-2004"
myArray(0,6) = "12-12-2004"

Dem vil jeg gerne have hjælp til at få sorteret - både med højeste (sidst på året) og laveste (først på året) først ( 2 funktioner altså :-) )

Jeg har prøvet at kigge lidt på Dennis Knappes bubelsort og den sortere også efter dagen, men ikke måned - jeg har ikke testet på år, men sansynligvis heller ikke der.

Hilsen
Claus
Avatar billede yellow Nybegynder
27. juli 2004 - 19:22 #1
<%
Function DateBubble2Dim(TempArray, blnReverse)
    Dim Temp
    Dim i
    Dim NoExchanges
    Do
        NoExchanges = True
        For i = 0 To UBound(TempArray,2) - 1
            If CDate(TempArray(0,i)) > CDate(TempArray(0,i + 1)) = blnReverse Then
                NoExchanges = False
                Temp = TempArray(0,i)
                TempArray(0,i) = TempArray(0,i + 1)
                TempArray(0,i + 1) = Temp
            End If
        Next
    Loop While Not (NoExchanges)

End Function

Dim myArray()
ReDim myArray(0,6)

myArray(0,0) = "01-01-2004"
myArray(0,1) = "25-01-2004"
myArray(0,2) = "02-02-2004"
myArray(0,3) = "05-05-2004"
myArray(0,4) = "30-05-2004"
myArray(0,5) = "28-02-2004"
myArray(0,6) = "12-12-2004"

Call DateBubble2Dim( myArray, true )
Response.Write "<h2>Laveste først</h2><ul>"
For i = 0 To UBound(myArray,2)
    Response.Write "<li>" & myArray(0,i) & "</li>"
Next
Call DateBubble2Dim( myArray, false )
Response.Write "</ul><h2>Højeste først</h2><ul>"
For i = 0 To UBound(myArray,2)
    Response.Write "<li>" & myArray(0,i) & "</li>"
Next
Response.Write "</ul>"

%>
Avatar billede clausn Nybegynder
28. juli 2004 - 07:34 #2
Skarpt!
Avatar billede clausn Nybegynder
28. juli 2004 - 08:22 #3
yellow: Det var snapt så skarpt. Hvis der er 2 ens datoer går den fuldstændig i selvsving og IIS kommer ud og fortæller at scriptet timed out.
Avatar billede yellow Nybegynder
28. juli 2004 - 11:50 #4
Hvad med den her?

Function DateBubble2Dim(TempArray, blnReverse)
    Dim Temp
    Dim i
    Dim NoExchanges
    Do
        NoExchanges = True
        For i = 0 To UBound(TempArray,2) - 1
            If blnReverse AND CDate(TempArray(0,i)) > CDate(TempArray(0,i + 1)) Then
                NoExchanges = False
                Temp = TempArray(0,i)
                TempArray(0,i) = TempArray(0,i + 1)
                TempArray(0,i + 1) = Temp
            Else If NOT blnReverse AND CDate(TempArray(0,i)) < CDate(TempArray(0,i + 1)) Then
                NoExchanges = False
                Temp = TempArray(0,i)
                TempArray(0,i) = TempArray(0,i + 1)
                TempArray(0,i + 1) = Temp
            End If
            End If
        Next
    Loop While Not (NoExchanges)
End Function
Avatar billede clausn Nybegynder
28. juli 2004 - 14:35 #5
Yep - virker

Takker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester