19 lines
No EOL
360 B
Text
19 lines
No EOL
360 B
Text
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:]);
|
|
} |