Function heap [src]

Unstable in-place sort. O(n*log(n)) best case, worst case and average case. O(1) memory (no allocator required). Sorts in ascending order with respect to the given lessThan function.

Prototype

pub fn heap( comptime T: type, items: []T, context: anytype, comptime lessThanFn: fn (@TypeOf(context), lhs: T, rhs: T) bool, ) void

Parameters

T: typeitems: []TlessThanFn: fn (@TypeOf(context), lhs: T, rhs: T) bool

Source

pub fn heap( comptime T: type, items: []T, context: anytype, comptime lessThanFn: fn (@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]); } }; heapContext(0, items.len, Context{ .items = items, .sub_ctx = context }); }