퀵소트 구현입니다.
Lamda Calculus를 적극적으로 사용해서 그런지 리스프랑 비슷해보이는 군요..?
// QuickSort
(QSort p s Nil) = Empty
(QSort p s (Cons x Nil)) = (Single x)
(QSort p s (Cons x xs)) =
(Split p s (Cons x xs) Nil Nil)
// Splits list in two partitions
(Split p s Nil min max) =
let s = (>> s 1)
let min = (QSort (- p s) s min)
let max = (QSort (+ p s) s max)
(Concat min max)
(Split p s (Cons x xs) min max) =
(Place p s (< p x) x xs min max)
// Sorts and sums n random numbers
(Main n) =
let list = (Randoms 1 (* 100000 n))
(Sum (QSort Pivot Pivot list))
퀵소트 구현입니다.
Lamda Calculus를 적극적으로 사용해서 그런지 리스프랑 비슷해보이는 군요..?