home *** CD-ROM | disk | FTP | other *** search
/ Compute! Gazette 1985 May / 1985-05.d64 / quicksort_64 (.txt) < prev    next >
Commodore BASIC  |  2022-09-20  |  1KB  |  35 lines

  1. 100 m=8192:gosub500:goto150
  2. 110 z=m+int(y/8)*320+int(x/8)*8+(yand7)
  3. 120 pokez,peek(z)ort%(xand7):return
  4. 130 z=m+int(y/8)*320+int(x/8)*8+(yand7)
  5. 140 pokez,peek(z)andnott%(xand7):return
  6. 150 fori=0to7:t%(7-i)=2^i:next
  7. 160 sys49152:poke53272,peek(53272)or8:poke53265,peek(53265)or32
  8. 170 s=99:diml%(s),m%(s),s%(20)
  9. 180 fort=1tos:l%(t)=rnd(0)*s*3+12:x=l%(t)
  10. 190 m%(t)=2*t:y=m%(t):gosub110:next:ti$="000000":s%(1)=1:s%(2)=s:p=2
  11. 200 l=s%(p):p=p-1:f=s%(p):p=p-1:i=f
  12. 210 j=l:d=l%((f+l)/2)
  13. 220 ifl%(i)<dtheni=i+1:goto220
  14. 230 ifl%(j)>dthenj=j-1:goto230
  15. 240 ifi<=jthengosub330:t=l%(i):l%(i)=l%(j):l%(j)=t:i=i+1:j=j-1
  16. 250 ifi<=jthen220
  17. 260 iff<jthenp=p+1:s%(p)=f:p=p+1:s%(p)=j
  18. 270 f=i:iff<lthen210
  19. 280 ifp<>0then200
  20. 290 t$=ti$:poke198,0
  21. 300 geta$:ifa$=""then300
  22. 310 poke53265,peek(53265)and223:print"[147]":poke53272,21
  23. 320 prints"items sorted in "mid$(t$,3,2)":"right$(t$,2)".":end
  24. 330 y=m%(i):x=l%(i):gosub130:y=m%(j):x=l%(j):gosub130
  25. 340 y=m%(i):x=l%(j):gosub110:y=m%(j):x=l%(i):gosub110:return
  26. 500 x=0:fori=49152to49190:reada:x=x+a:pokei,a:next
  27. 510 ifx<>6678thenprint"error in data statements.":stop
  28. 520 return
  29. 530 data 169,32,133,252,162,32,169
  30. 540 data 0,168,145,251,200,208,251
  31. 550 data 230,252,202,208,246,169,4
  32. 560 data 133,254,170,160,0,169,16
  33. 570 data 145,253,200,208,251,230,254
  34. 580 data 202,208,246,96
  35.