home *** CD-ROM | disk | FTP | other *** search
- // Sort test with quicksort
-
- DIM n OF LONG, i OF LONG, j OF LONG
-
- PRINT AT 8,20: "Creating text array to sort ..."
-
- n:=1000 // Number of text lines
- DIM t$(n) OF 10
- FOR i:=1 TO n DO
- FOR j:=1 TO 10 DO
- t$(i):+CHR$(RND(65,90))
- ENDFOR j
- ENDFOR i
-
- PAGE
- PRINT AT 8,20: "Sorting the text array ..."
- starttime:=TIMER
- quicksort(t$(),1,n)
-
- PAGE
- PRINT AT 8,20: "Sorting complete."
- PRINT AT 10,20: USING "Time used : ##.## secs": TIMER-starttime
- s$:=INKEY$(5)
-
- // ******** end of main program ********
-
- PROC quicksort(REF t$(),start OF LONG,slut OF LONG)
- LOCAL temp$ OF 10, x$ OF 10
- LOCAL a OF LONG, z OF LONG
- a:=start
- z:=slut
- x$:=t$((start+slut)/2)
- REPEAT
- WHILE t$(a)<x$ DO a:+1
- WHILE x$<t$(z) DO z:-1
- IF a<=z THEN
- temp$:=t$(a); t$(a):=t$(z); t$(z):=temp$
- a:+1
- z:-1
- ENDIF
- UNTIL a>z
- IF start<z THEN quicksort(t$(),start,z)
- IF a<slut THEN quicksort(t$(),a,slut)
- ENDPROC quicksort
-