authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-12-15 11:15:58-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-12-19 17:35:38-05:00
log1435604b84dbf338c1b6096f473bc89aef144be0
tree17ba68d0c62f57d15f39d5e1a530d4c19c32497e
parent2a8160e80fc0a03700b83ac9a715f97d1d637f02

add sort.min and sort.max functions to stdlib


2 files changed, 26 insertions(+), 6 deletions(-)

std/mem.zig+4-6
......@@ -511,9 +511,8 @@ fn testWriteIntImpl() {
511511
512512pub fn min(comptime T: type, slice: []const T) -> T {
513513 var best = slice[0];
514 var i: usize = 1;
515 while (i < slice.len) : (i += 1) {
516 best = math.min(best, slice[i]);
514 for (slice[1..]) |item| {
515 best = math.min(best, item);
517516 }
518517 return best;
519518}
......@@ -524,9 +523,8 @@ test "mem.min" {
524523
525524pub fn max(comptime T: type, slice: []const T) -> T {
526525 var best = slice[0];
527 var i: usize = 1;
528 while (i < slice.len) : (i += 1) {
529 best = math.max(best, slice[i]);
526 for (slice[1..]) |item| {
527 best = math.max(best, item);
530528 }
531529 return best;
532530}
std/sort.zig+22
......@@ -1132,3 +1132,25 @@ fn fuzzTest(rng: &std.rand.Rand) {
11321132 }
11331133 }
11341134}
1135
1136pub fn min(comptime T: type, items: []T, lessThan: fn(lhs: &const T, rhs: &const T)->bool) -> T {
1137 var i: usize = 0;
1138 var smallest = items[0];
1139 for (items[1..]) |item| {
1140 if (lessThan(item, smallest)) {
1141 smallest = item;
1142 }
1143 }
1144 return smallest;
1145}
1146
1147pub fn max(comptime T: type, items: []T, lessThan: fn(lhs: &const T, rhs: &const T)->bool) -> T {
1148 var i: usize = 0;
1149 var biggest = items[0];
1150 for (items[1..]) |item| {
1151 if (lessThan(biggest, item)) {
1152 biggest = item;
1153 }
1154 }
1155 return biggest;
1156}