Avatar billede loukas Mester
05. januar 2004 - 09:40 Der er 4 kommentarer og
1 løsning

hjælp til asp komponent - sortering af array

Jeg har en sub til sort af et array.
For at få en bedre ydelse kunne jeg godt tænke mig at få der ovet i et komponent.
Men... jeg er næsten helt ny med selv at lave komponenter, Har prøvet at lave klassikkeren 'hello world'  ;-)

Sub:
Private Sub SortResultsByNumMatches(ByRef sarySearchResults, ByRef intTotalFilesFound)

    'Dimension variables
    Dim intArrayGap         'Holds the part of the array being sorted
    Dim intIndexPosition        'Holds the Array index position being sorted
    Dim intTempResultsHold        'Temperary hold for the results if they need swapping array positions       
    Dim intTempNumMatchesHold    'Temperary hold for the number of matches for the result if they need swapping array positions
    Dim intPassNumber        'Holds the pass number for the sort
   
   
    'Loop round to sort each result found
    For intPassNumber = 1 To intTotalFilesFound
   
        'Shortens the number of passes
        For intIndexPosition = 1 To (intTotalFilesFound - intPassNumber)
       
            'If the Result being sorted hass less matches than the next result in the array then swap them
            If sarySearchResults(intIndexPosition,2) < sarySearchResults((intIndexPosition+1),2) Then
           
               
                'Place the Result being sorted in a temporary variable
                intTempResultsHold = sarySearchResults(intIndexPosition,1)
               
                'Place the Number of Matches for the result being sorted in a temporary variable
                intTempNumMatchesHold = sarySearchResults(intIndexPosition,2)
               
               
                'Do the array position swap
               
                'Move the next Result with a higher match rate into the present array location
                sarySearchResults(intIndexPosition,1) = sarySearchResults((intIndexPosition+1),1)
                                   
                'Move the next Number of Matches for the result with a higher match rate into the present array location
                sarySearchResults(intIndexPosition,2) = sarySearchResults((intIndexPosition+1),2)
               
                'Move the Result from the teporary holding variable into the next array position
                sarySearchResults((intIndexPosition+1),1) = intTempResultsHold
               
                'Move the Number of Matches for the result from the teporary holding variable into the next array position
                sarySearchResults((intIndexPosition+1),2) = intTempNumMatchesHold           
            End If
        Next           
    Next                   
End Sub
Avatar billede martin_moth Mester
05. januar 2004 - 12:46 #1
Vil ydelsen blive bedre ved at få den over i en komponent? (måske dumt spørgsmål)

Der er jo mange forskellige sorteringsalgorimter, og afhængig af naturen af de data der skal sorteres (om de er meget rodede, eller om de er næsten sorterede, ...) er forskellige sorteringsmetoder bedre end andre. Blot noget at overveje hvis du tænker performance.

Just my 5 cents...
Avatar billede martin_moth Mester
05. januar 2004 - 12:49 #2
Mht. performance, er der måske også hentet noget ved at erklære hvilke typer dine variabler er (fx. Dim intArrayGap As Integer) og bruge lokale varieble (fx. ser det ud som om du har et globalt erklæret array sarySearchResults()

Igen blot en kommentar, ved ikke om det er holdbart det jeg siger her...
Avatar billede loukas Mester
05. januar 2004 - 20:42 #3
Det bliver p.t. brugt som script i et asp-dokument.
Ved at lave det til en .dll er koden kompileret derfor hurtigere at exekvere, eller tager jeg fejl ??
Avatar billede martin_moth Mester
06. januar 2004 - 08:13 #4
Nu regnede jeg jo med at det var et VB-program, der jo kompileres, og ikke et VBscript (bemærk, at der er en kategori VBScript, og du er i Visual Basic)

Jeg tror i øvrigt du har ganske ret. Kan desværre ikke hjælpe ret meget. Prøv at søg på komponment, DLL osv. på eksperten
Avatar billede loukas Mester
06. januar 2004 - 19:04 #5
OK, jeg giver dig ret , spørgsmålet er formuleret med et par mangler..
Men kategorien er nu rigtig.
Jeg lukker og prøver igen senere.
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