home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / COMAL3-1.DMS / in.adf / Demos / Quicksort < prev    next >
Encoding:
Text File  |  1993-03-30  |  928 b   |  45 lines

  1. // Sort test with quicksort
  2.  
  3. DIM n OF LONG, i OF LONG, j OF LONG
  4.  
  5. PRINT AT 8,20: "Creating text array to sort ..."
  6.  
  7. n:=1000 // Number of text lines
  8. DIM t$(n) OF 10
  9. FOR i:=1 TO n DO
  10.   FOR j:=1 TO 10 DO
  11.     t$(i):+CHR$(RND(65,90))
  12.   ENDFOR j
  13. ENDFOR i
  14.  
  15. PAGE
  16. PRINT AT 8,20: "Sorting the text array ..."
  17. starttime:=TIMER
  18. quicksort(t$(),1,n)
  19.  
  20. PAGE
  21. PRINT AT 8,20: "Sorting complete."
  22. PRINT AT 10,20: USING "Time used : ##.## secs": TIMER-starttime
  23. s$:=INKEY$(5)
  24.  
  25. // ********  end of main program  ********
  26.  
  27. PROC quicksort(REF t$(),start OF LONG,slut OF LONG)
  28.   LOCAL temp$ OF 10, x$ OF 10
  29.   LOCAL a OF LONG, z OF LONG
  30.   a:=start
  31.   z:=slut
  32.   x$:=t$((start+slut)/2)
  33.   REPEAT
  34.     WHILE t$(a)<x$ DO a:+1
  35.     WHILE x$<t$(z) DO z:-1
  36.     IF a<=z THEN
  37.       temp$:=t$(a); t$(a):=t$(z); t$(z):=temp$
  38.       a:+1
  39.       z:-1
  40.     ENDIF
  41.   UNTIL a>z
  42.   IF start<z THEN quicksort(t$(),start,z)
  43.   IF a<slut THEN quicksort(t$(),a,slut)
  44. ENDPROC quicksort
  45.