Hej, jag har ett par frågor som jag gjärna skulle vilja ha svar på. Jag har en kodsnutt som sorterar två arrayer av datatypen variant, men det går ganska enkelt att ändra till ex. integer.Två frågor...
1. Jag har fyra arrayer varav den ena innehåller endast siffror. Nu vill jag att programmet ska rangordna arrayen (array1(0)=det största talet, array1(1)=det näst största talet, osv...) och då skall även de andra arrayerna "rangordnas". (Om array1(3) är det största talet och blir då altså array1(0) ska också de andra arrayerna byta så. (array2(0)=array2(3)...))
2. Jag vill kunna sända text till, eller göra en viss textruta markerad, i ett html dokument, i Explorer eller Netscape.
Jag tror att det kan vara lite svårt att tyda det som står i fråga ett, men jag hoppas att ni förstår vad jag menar.
Tacksam för svar!
/RiPPeRSv: Två frågor...
Klistra in detta in en modul:
Option Explicit
Public Sub SortVariantArray(ByRef list, ByRef fn)
QuicksortVariant list, LBound(list), UBound(list), fn
End Sub
Private Sub QuicksortVariant(list, min, max, fn)
Dim med_value
Dim med_fn
Dim hi
Dim lo
Dim i
' If the list has no more than CutOff elements,
' finish it off with SelectionSort.
If max <= min Then Exit Sub
' Pick the dividing value.
i = Int((max - min + 1) * Rnd + min)
med_value = list(i): med_fn = fn(i)
' Swap it to the front.
list(i) = list(min): fn(i) = fn(min)
lo = min
hi = max
Do
' Look down from hi for a value < med_value.
Do While list(hi) >= med_value
hi = hi - 1
If hi <= lo Then Exit Do
Loop
If hi <= lo Then
list(lo) = med_value: fn(lo) = med_fn
Exit Do
End If
' Swap the lo and hi values.
list(lo) = list(hi): fn(lo) = fn(hi)
' Look up from lo for a value >= med_value.
lo = lo + 1
Do While list(lo) < med_value
lo = lo + 1
If lo >= hi Then Exit Do
Loop
If lo >= hi Then
lo = hi
list(hi) = med_value: fn(hi) = med_fn
Exit Do
End If
' Swap the lo and hi values.
list(hi) = list(lo): fn(hi) = fn(lo)
Loop
' Sort the two sublists.
QuicksortVariant list, min, lo - 1, fn
QuicksortVariant list, lo + 1, max, fn
End Sub
Anropa från en form så här (array1 bestämmer sorteringsordningen):
Call SortVariantArray(array1, array2)