; interleaved increasing-decreasing sort
(define (f xs)
(let ((xs (sort xs <))
(len (vector-length xs)))
(do ((lo 1 (+ lo 2))
(hi (- len (if (even? len) 1 2)) (- hi 2)))
((<= hi lo) xs)
(let ((t (vector-ref xs lo)))
(vector-set! xs lo (vector-ref xs hi))
(vector-set! xs hi t)))))
(display (f '#(0 1 2 3 4 5 6 7 8 9))) (newline)
OyBpbnRlcmxlYXZlZCBpbmNyZWFzaW5nLWRlY3JlYXNpbmcgc29ydAoKKGRlZmluZSAoZiB4cykKICAobGV0ICgoeHMgKHNvcnQgeHMgPCkpCiAgICAgICAgKGxlbiAodmVjdG9yLWxlbmd0aCB4cykpKQogICAgKGRvICgobG8gMSAoKyBsbyAyKSkKICAgICAgICAgKGhpICgtIGxlbiAoaWYgKGV2ZW4/IGxlbikgMSAyKSkgKC0gaGkgMikpKQogICAgICAgICgoPD0gaGkgbG8pIHhzKQogICAgICAobGV0ICgodCAodmVjdG9yLXJlZiB4cyBsbykpKQogICAgICAgICh2ZWN0b3Itc2V0ISB4cyBsbyAodmVjdG9yLXJlZiB4cyBoaSkpCiAgICAgICAgKHZlY3Rvci1zZXQhIHhzIGhpIHQpKSkpKQoKKGRpc3BsYXkgKGYgJyMoMCAxIDIgMyA0IDUgNiA3IDggOSkpKSAobmV3bGluZSk=