Sorting algorithms/Radix sort: Difference between revisions
→An implementation using lexicographic order to support negative integers
Line 3,521:
The following implementation
<lang Scheme>;;; An illustrative implementation of the radix-10 example at
Line 3,532:
(import (scheme base))
(import (scheme write))
(define (sort-by-decimal-digit data power-of-10)
Line 3,565 ⟶ 3,559:
(define (radix-sort data)
(define
(do ((i 0 (+ i 1)))
((<=
(let ((x (vector-ref data i)))
(
(vector-set! data i (nines-complement▼
(do ((i 0 (+ i 1)))
(let loop ((power-of-10 1))
(let ((done (sort-by-decimal-digit data power-of-10)))
(unless done
(loop (* 10 power-of-10)))))
(do ((i 0 (+ i 1)))
((= i (vector-length data)))
(let ((x (vector-ref data i)))
▲ (vector-set! data i (- x max-magnitude))
▲ (vector-set! data i (- max-magnitude
(define data (vector-copy #(170 45 75 90 2 802 2 66)))
|