Sorting algorithms/Quicksort: Difference between revisions

Content added Content deleted
imported>Joeypas
m (formatting issue)
imported>Joeypas
(Formatting again?)
Line 10,156: Line 10,156:
=={{header|zig}}==
=={{header|zig}}==


<syntaxhighlight lang="zig"> const std = @import("std");
<syntaxhighlight lang="zig">const std = @import("std");


pub fn quicksort(comptime t: type, arr: []t) void {
pub fn quicksort(comptime t: type, arr: []t) void {
if (arr.len < 2) return;
if (arr.len < 2) return;
var pivot = arr[@as(usize, @intFromFloat(@floor(@as(f64, @floatFromInt(arr.len)) / 2)))];
var pivot = arr[@as(usize, @intFromFloat(@floor(@as(f64, @floatFromInt(arr.len)) / 2)))];
var left: usize = 0;
var left: usize = 0;
var right: usize = arr.len - 1;
var right: usize = arr.len - 1;


while (left <= right) {
while (left <= right) {
while (arr[left] < pivot) {
while (arr[left] < pivot) {
left += 1;
left += 1;
}
}
while (arr[right] > pivot) {
while (arr[right] > pivot) {
right -= 1;
right -= 1;
}
}
if (left <= right) {
if (left <= right) {
const tmp = arr[left];
const tmp = arr[left];
arr[left] = arr[right];
arr[left] = arr[right];
arr[right] = tmp;
arr[right] = tmp;
left += 1;
left += 1;
right -= 1;
right -= 1;
}
}
}
}


quicksort(t, arr[0 .. right + 1]);
quicksort(t, arr[0 .. right + 1]);
quicksort(t, arr[left..]);
quicksort(t, arr[left..]);
}
}


pub fn main() !void {
pub fn main() !void {