// Quicksort benchmark - sorting algorithm
const std = @import("std");

fn quicksort(arr: []i64) void {
    if (arr.len <= 1) return;
    const pivot = arr[arr.len - 1];
    var i: usize = 0;
    for (arr[0..arr.len-1]) |*item| {
        if (item.* < pivot) {
            const temp = arr[i];
            arr[i] = item.*;
            item.* = temp;
            i += 1;
        }
    }
    const temp = arr[i];
    arr[i] = arr[arr.len - 1];
    arr[arr.len - 1] = temp;

    if (i > 0) quicksort(arr[0..i]);
    if (i + 1 < arr.len) quicksort(arr[i+1..]);
}

pub fn main() !void {
    var nums: [1000]i64 = undefined;
    for (&nums, 0..) |*n, i| {
        n.* = @mod(@as(i64, @intCast(i)) * 7 + 13, 1000);
    }
    quicksort(&nums);
    const stdout = std.io.getStdOut().writer();
    try stdout.print("Sorted {d} elements\n", .{nums.len});
}
