Files
sx/examples/23-quicksort.sx
2026-02-10 20:23:37 +02:00

40 lines
877 B
Plaintext

#import "modules/std.sx";
quickSort :: (items: []$T) {
partition :: (items: []T, lo: s32, hi: s32) -> s32 {
pivot := items[hi];
i := lo - 1;
j := lo;
while j < hi {
if items[j] < pivot {
i += 1;
tmp := items[i];
items[i] = items[j];
items[j] = tmp;
}
j += 1;
}
i += 1;
tmp := items[i];
items[i] = items[hi];
items[hi] = tmp;
i;
}
sort :: (items: []T, lo: s32, hi: s32) {
if lo < hi {
pi := partition(items, lo, hi);
sort(items, lo, pi - 1);
sort(items, pi + 1, hi);
}
}
sort(items, 0, items.len - 1);
}
main :: () {
arr : []s32 = .[333, 2, 3, 5, 2, 2, 3, 4, 5, 6, 6, 1];
quickSort(arr);
print("{}\n", arr);
}