mirror of
https://github.com/ziglang/zig.git
synced 2025-02-14 16:40:17 +00:00
add sort.min and sort.max functions to stdlib
This commit is contained in:
parent
2a8160e80f
commit
1435604b84
10
std/mem.zig
10
std/mem.zig
@ -511,9 +511,8 @@ fn testWriteIntImpl() {
|
||||
|
||||
pub fn min(comptime T: type, slice: []const T) -> T {
|
||||
var best = slice[0];
|
||||
var i: usize = 1;
|
||||
while (i < slice.len) : (i += 1) {
|
||||
best = math.min(best, slice[i]);
|
||||
for (slice[1..]) |item| {
|
||||
best = math.min(best, item);
|
||||
}
|
||||
return best;
|
||||
}
|
||||
@ -524,9 +523,8 @@ test "mem.min" {
|
||||
|
||||
pub fn max(comptime T: type, slice: []const T) -> T {
|
||||
var best = slice[0];
|
||||
var i: usize = 1;
|
||||
while (i < slice.len) : (i += 1) {
|
||||
best = math.max(best, slice[i]);
|
||||
for (slice[1..]) |item| {
|
||||
best = math.max(best, item);
|
||||
}
|
||||
return best;
|
||||
}
|
||||
|
22
std/sort.zig
22
std/sort.zig
@ -1132,3 +1132,25 @@ fn fuzzTest(rng: &std.rand.Rand) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn min(comptime T: type, items: []T, lessThan: fn(lhs: &const T, rhs: &const T)->bool) -> T {
|
||||
var i: usize = 0;
|
||||
var smallest = items[0];
|
||||
for (items[1..]) |item| {
|
||||
if (lessThan(item, smallest)) {
|
||||
smallest = item;
|
||||
}
|
||||
}
|
||||
return smallest;
|
||||
}
|
||||
|
||||
pub fn max(comptime T: type, items: []T, lessThan: fn(lhs: &const T, rhs: &const T)->bool) -> T {
|
||||
var i: usize = 0;
|
||||
var biggest = items[0];
|
||||
for (items[1..]) |item| {
|
||||
if (lessThan(biggest, item)) {
|
||||
biggest = item;
|
||||
}
|
||||
}
|
||||
return biggest;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user