Zig 0.17.0-dev (Split by item)

This is an example of documentation generated by ZigDoc, an alternative to Zig's built-in Auto Doc feature. See also examples in other modes/formats. The project being documented here (as the example) is the Zig library itself.

partitionEqual

partitions items into elements equal to items[pivot] followed by elements greater than items[pivot].

it assumed that items[a..b] does not contain elements smaller than the items[pivot].

pdq.partitionEqual
fn partitionEqual(a: usize, b: usize, pivot: usize, context: anytype) usize

File

lib/std/sort/pdq.zig:259

Code

fn partitionEqual(a: usize, b: usize, pivot: usize, context: anytype) usize {
    // move pivot to the first place
    context.swap(a, pivot);

    var i = a + 1;
    var j = b - 1;

    while (true) {
        while (i <= j and !context.lessThan(a, i)) i += 1;
        while (i <= j and context.lessThan(a, j)) j -= 1;
        if (i > j) break;

        context.swap(i, j);
        i += 1;
        j -= 1;
    }

    return i;
}