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"> |
<syntaxhighlight lang="zig">const std = @import("std"); |
||
pub fn quicksort(comptime t: type, arr: []t) void { |
|||
if (arr.len < 2) return; |
|||
var pivot = arr[@as(usize, @intFromFloat(@floor(@as(f64, @floatFromInt(arr.len)) / 2)))]; |
|||
var left: usize = 0; |
|||
var right: usize = arr.len - 1; |
|||
while (left <= right) { |
|||
while (arr[left] < pivot) { |
|||
left += 1; |
|||
} |
|||
while (arr[right] > pivot) { |
|||
right -= 1; |
|||
} |
|||
if (left <= right) { |
|||
const tmp = arr[left]; |
|||
arr[left] = arr[right]; |
|||
arr[right] = tmp; |
|||
left += 1; |
|||
right -= 1; |
|||
} |
|||
} |
|||
quicksort(t, arr[0 .. right + 1]); |
|||
quicksort(t, arr[left..]); |
|||
} |
|||
pub fn main() !void { |
pub fn main() !void { |