/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
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



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408937
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste