DECLARE SUB QuickSort (a%(), l%, r%) 'Meu QuickSort ' DEFINT A-Z RANDOMIZE TIMER DIM a(1 TO 1000) FOR m = 1 TO 100 a(m) = INT(RND * 10000) NEXT m = m - 1 CLS FOR i = 1 TO m PRINT a(i); NEXT PRINT t! = TIMER QuickSort a(), 1, m t! = TIMER - t! PRINT "Ordem:" FOR i = 1 TO m PRINT a(i); NEXT PRINT PRINT t!; "s" SYSTEM SUB QuickSort (a(), l, r) IF l >= r THEN EXIT SUB m = (l + r) \ 2 med = a(m) DO passou = 0 ct = 0 DO ct = ct + 1 IF m + ct <= r THEN IF a(m + ct) < med THEN SWAP a(m + ct), a(m): med = a(m): passou = -1 END IF IF m - ct >= l THEN IF a(m - ct) > med THEN SWAP a(m - ct), a(m): med = a(m): passou = -1 END IF LOOP WHILE m + ct <= r OR m - ct >= l LOOP WHILE passou QuickSort a(), l, m - 1 QuickSort a(), m + 1, r END SUB