(def swap (a i j) (t) (do (set t (vec a i)) (setv a i (vec a j)) (setv a j t))) (def partition (a p r) (x i j flag) (do (set x (vec a p)) (set i (- p 1)) (set j (+ r 1)) (set flag 1) (while flag (do (set j (- j 1)) (while (> (vec a j) x) (set j (- j 1))) (set i (+ i 1)) (while (< (vec a i) x) (set i (+ i 1))) (if (< i j) (swap a i j) (set flag 0)))) j )) (def quicksort (a p r) (q) (if (< p r) (do (set q (partition a p r)) (quicksort a p q) (quicksort a (+ q 1) r)) (nop))) (def inita (a s) (i) (do (set i 0) (while (< i s) (do (setv a i (- s i)) (set i (+ i 1)))))) (def show (a s) (i) (do (set i 0) (while (< i s) (do (print (vec a i)) (space) (set i (+ i 1)))) (nl))) (def main () (a) (do (set a (new 10)) (inita a 10) (show a 10) (quicksort a 0 9) (show a 10)))