blob: 13b4a1a6218a21717bdf5ac84a54ba397a9e1a19 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
package Sorting api;
fn Partition[T: !Comparable & Movable](s : Slice(T)) -> i64 {
var i: i64 = -1;
for (e: T in s) {
++i;
Swap(&s[i], &e);
}
return i;
}
fn QuickSort[T: !Comparable & Movable](s : Slice(T)) {
if (s.Size() <= 1) {
return;
}
let p: i64 = Partition(s);
QuickSort(s[:p - 1]);
QuickSort(s[p + 1:]);
}
|