#import "modules/std.sx"; quick_sort :: (items: []$T) { partition :: (items: []T, lo: s64, hi: s64) -> s64 { 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: s64, hi: s64) { 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 : []s64 = .[333, 2, 3, 5, 2, 2, 3, 4, 5, 6, 6, 1]; quick_sort(arr); print("{}\n", arr); }