Function pdq [src]
Alias for std.sort.pdq.pdq
Unstable in-place sort. n best case, n*log(n) worst case and average case.
log(n) memory (no allocator required).
Sorts in ascending order with respect to the given lessThan function.
Prototype
pub fn pdq( comptime T: type, items: []T, context: anytype, comptime lessThanFn: fn (context: @TypeOf(context), lhs: T, rhs: T) bool, ) void
Parameters
T: type
items: []T
lessThanFn: fn (context: @TypeOf(context), lhs: T, rhs: T) bool
Source
pub fn pdq(
comptime T: type,
items: []T,
context: anytype,
comptime lessThanFn: fn (context: @TypeOf(context), lhs: T, rhs: T) bool,
) void {
const Context = struct {
items: []T,
sub_ctx: @TypeOf(context),
pub fn lessThan(ctx: @This(), a: usize, b: usize) bool {
return lessThanFn(ctx.sub_ctx, ctx.items[a], ctx.items[b]);
}
pub fn swap(ctx: @This(), a: usize, b: usize) void {
return mem.swap(T, &ctx.items[a], &ctx.items[b]);
}
};
pdqContext(0, items.len, Context{ .items = items, .sub_ctx = context });
}