17. juni 2009 - 22:42Der er
12 kommentarer og 1 løsning
Array Sortering
Hej,
Jeg har har en funktion som sortere mit array - det virker sådan set fint.
Function BubbleSort(arrInt)
arrInt = Array(arrInt) for i = UBound(arrInt) - 1 To 0 Step -1 for j= 0 to i if arrInt(j)>arrInt(j+1) then temp = arrInt(j+1) arrInt(j+1) = arrInt(j) arrInt(j) = temp end if next next BubbleSort = arrInt end function
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Jeg tror det er fordi du har misforstået hvordan Array-funktionen fungerer...
Hvis du vil omsætte strengen
"vvs","vand","kloak","ror","abc"
til et array, skal du splitte den ved "," (dvs. anførselstegn komma anførselstegn og samtidig fjerne anførselstegn i enderne for at det bliver et array af værdier. Noget i stil med dette:
Det her vil dog også fungere (men det synes jeg nu er lidt af et hack!) :-)
<% Function BubbleSort(arrInt)
execute "arrInt = Array(" & arrInt & ")" for i = UBound(arrInt) - 1 To 0 Step -1 for j= 0 to i if arrInt(j)>arrInt(j+1) then temp = arrInt(j+1) arrInt(j+1) = arrInt(j) arrInt(j) = temp end if next next BubbleSort = arrInt end function
Koderettelsen i indlæg #2 skal kaldes på samme måde som i koderettelsen i indlæg #3, da din syntaks ellers ikke er gyldig (VBScript tillader dig, såvidt jeg ved, ikke at erklære variable antal parametre til en funktion).
execute "arrInt = Array(" & arrInt & ")" for i = UBound(arrInt) - 1 To 0 Step -1 for j= 0 to i if arrInt(j)>arrInt(j+1) then temp = arrInt(j+1) arrInt(j+1) = arrInt(j) arrInt(j) = temp end if next next ' temp indeholder nu en sorteret liste.. BubbleSortArray = arrInt end function
Ja, du kan bruge det første forslag, hvor strengen der sendes ind bare splittes op og gennemløbes som et normalt array. Det ville i så fald se således ud:
<% Function BubbleSort(arrInt) arrInt = Split(arrInt,",") for i = UBound(arrInt) - 1 To 0 Step -1 for j= 0 to i if arrInt(j)>arrInt(j+1) then temp = arrInt(j+1) arrInt(j+1) = arrInt(j) arrInt(j) = temp end if next next BubbleSort = arrInt end function
Bemærk i øvrigt at Bubblesort returnerer et array, så det er ikke nødvendigt at gøre andet end at udskrive det i din løkke (hvis nu man skal tage udgangspunkt i det eksempel i indlæg #6).
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.