; bubble sort

(enum 20 maxdata)
(let data)

(def init () (i)
  (do
  (set data (new maxdata))
  (set i 0)
  (while (< i maxdata)
    (do
    (setv data i (- maxdata i))
    (set i (+ i 1))))))

(def show () (i)
  (do
  (set i 0)
  (while (< i maxdata)
    (do
    (sys 1 (vec data i))
    (sys 2 32)
    (set i (+ i 1))))
  (sys 2 10)))

(def swap (a b) (t)
  (do
  (set t (vec data a))
  (setv data a (vec data b))
  (setv data b t)))

(def sort () (i j)
  (do
  (set i 0)
  (while (< i maxdata)
    (do
    (set j 0)
    (while (< j (- maxdata 1))
      (do      
      (if (< (vec data (+ j 1)) (vec data j))
         (swap j (+ j 1)))
      (set j (+ j 1))))
    (set i (+ i 1))))))

(def main () ()
  (do
  (init)
  (show)
  (sort)
  (show)))
  

    