Binary search: Difference between revisions

Content added Content deleted
(→‎{{header|Zig}}: Add recursive example with slices)
Line 8,011: Line 8,011:
====Recursive====
====Recursive====
<syntaxhighlight lang="zig">pub fn binarySearch(comptime T: type, input: []const T, search_value: T) ?usize {
<syntaxhighlight lang="zig">pub fn binarySearch(comptime T: type, input: []const T, search_value: T) ?usize {
if (@sizeOf(T) == 0) return 0;

return binarySearchInner(T, input, search_value, @intFromPtr(input.ptr));
return binarySearchInner(T, input, search_value, @intFromPtr(input.ptr));
}
}
Line 8,018: Line 8,016:
fn binarySearchInner(comptime T: type, input: []const T, search_value: T, start_address: usize) ?usize {
fn binarySearchInner(comptime T: type, input: []const T, search_value: T, start_address: usize) ?usize {
if (input.len == 0) return null;
if (input.len == 0) return null;
if (@sizeOf(T) == 0) return 0;


const mid = (input.len - 1) / 2;
const mid = (input.len - 1) / 2;