fork download
  1. ; interleaved increasing-decreasing sort
  2.  
  3. (define (f xs)
  4. (let ((xs (sort xs <))
  5. (len (vector-length xs)))
  6. (do ((lo 1 (+ lo 2))
  7. (hi (- len (if (even? len) 1 2)) (- hi 2)))
  8. ((<= hi lo) xs)
  9. (let ((t (vector-ref xs lo)))
  10. (vector-set! xs lo (vector-ref xs hi))
  11. (vector-set! xs hi t)))))
  12.  
  13. (display (f '#(0 1 2 3 4 5 6 7 8 9))) (newline)
Success #stdin #stdout 0.03s 8616KB
stdin
Standard input is empty
stdout
#(0 9 2 7 4 5 6 3 8 1)