-
Notifications
You must be signed in to change notification settings - Fork 0
/
quicksort.txt
18 lines (16 loc) · 915 Bytes
/
quicksort.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
:: partition, (arr, p, r) => { :: x, [arr][[r]]
:: i, ([p] - 1)
|[p], ([r] - 1) : (j) => (([arr][[j]] <= [x]) ?
{ (([i] + 1) -> i)
swap([arr], [i], [j])})|
swap([arr], ([i] + 1), [r])
:: result, ([i] + 1)}
:: quicksort, (arr, p, r) => (([p] < [r]) ?
{ :: q, [partition]([arr], [p], [r])
[quicksort]([arr], [p], ([q][result] - 1))
[quicksort]([arr], ([q][result] + 1), [r])}
: [0])
:: n, read()
:: vals, |[n] : () => read()|
[quicksort]([vals], 1, [n])
|[vals] : (val) => {write([val]) newline()}|