|
| Hjælp til array... Fra : David Sand |
Dato : 11-09-02 13:55 |
|
Jeg har et array bestående af en række talkombinationer
eks.
arrTest = Array("011", "012", "013", "014", "021",... osv.
Jeg skal være i stand til at blande inholdet så de står i en
vilkårlig rækkefølge.
Derefter skal jeg kunne sætte dem "i orden'" igen - altså så de
igen står i rækkefølge...
HJÆLP.
- David
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Thomas Smedebøl (11-09-2002)
| Kommentar Fra : Thomas Smedebøl |
Dato : 11-09-02 14:17 |
|
"David Sand" <sand_david@hotmail.com> wrote in message
news:alneea$9nt$1@sunsite.dk...
> Jeg har et array bestående af en række talkombinationer
> arrTest = Array("011", "012", "013", "014", "021",... osv.
> Jeg skal være i stand til at blande inholdet så de står i en
> vilkårlig rækkefølge.
Havde ikke lige noget der kunne bruges til dette, men tror det letteste vil
være at lave et hjælpearray som værdierne flyttes over i efterhånden. Når en
tilfældig værdi er flyttet sættes den til eksempelvis "xxx", så skal du bare
kontrollere om en værdi er "xxx" inden den flyttes til hjælpearrayet.
> Derefter skal jeg kunne sætte dem "i orden'" igen - altså så de
> igen står i rækkefølge...
Sorter med denne funktion:
<%
SUB QuickSort(vec,loBound,hiBound)
DIM pivot,loSwap,hiSwap,temp
'Hvis der kun er 2 elementer der skal sorteres
IF hiBound - loBound = 1 THEN
IF vec(loBound) > vec(hiBound) THEN
temp=vec(loBound)
vec(loBound) = vec(hiBound)
vec(hiBound) = temp
END IF
END IF
'Hvis der er mere end 2 elementer der skal sorteres
pivot = vec(INT((loBound + hiBound) / 2))
vec(INT((loBound + hiBound) / 2)) = vec(loBound)
vec(loBound) = pivot
loSwap = loBound + 1
hiSwap = hiBound
DO
'Find loSwap
WHILE loSwap < hiSwap AND vec(loSwap) <= pivot
loSwap = loSwap + 1
WEND
'Find hiSwap
WHILE vec(hiSwap) > pivot
hiSwap = hiSwap - 1
WEND
'Ombyt værdierne hvis loSwap er mindre end hiSwap
IF loSwap < hiSwap THEN
temp = vec(loSwap)
vec(loSwap) = vec(hiSwap)
vec(hiSwap) = temp
END IF
LOOP WHILE loSwap < hiSwap
vec(loBound) = vec(hiSwap)
vec(hiSwap) = pivot
'Rekursivt kald af functionen
'2 eller flere elementer i den første sektion
IF loBound < (hiSwap - 1) THEN CALL QuickSort(vec,loBound,hiSwap-1)
'2 eller flere elementer i den anden sektion
IF hiSwap + 1 < hibound THEN CALL QuickSort(vec,hiSwap+1,hiBound)
END SUB
%>
Mvh Thomas
| |
|
|