| ... | @@ -1189,7 +1189,7 @@ fn fuzzTest(rng: *std.rand.Random) void { | ... | @@ -1189,7 +1189,7 @@ fn fuzzTest(rng: *std.rand.Random) void { |
| 1189 | } | 1189 | } |
| 1190 | } | 1190 | } |
| 1191 | | 1191 | |
| 1192 | pub fn min(comptime T: type, items: []T, lessThan: fn (lhs: T, rhs: T) bool) T { | 1192 | pub fn min(comptime T: type, items: []const T, lessThan: fn (lhs: T, rhs: T) bool) T { |
| 1193 | var i: usize = 0; | 1193 | var i: usize = 0; |
| 1194 | var smallest = items[0]; | 1194 | var smallest = items[0]; |
| 1195 | for (items[1..]) |item| { | 1195 | for (items[1..]) |item| { |
| ... | @@ -1200,7 +1200,16 @@ pub fn min(comptime T: type, items: []T, lessThan: fn (lhs: T, rhs: T) bool) T { | ... | @@ -1200,7 +1200,16 @@ pub fn min(comptime T: type, items: []T, lessThan: fn (lhs: T, rhs: T) bool) T { |
| 1200 | return smallest; | 1200 | return smallest; |
| 1201 | } | 1201 | } |
| 1202 | | 1202 | |
| 1203 | pub fn max(comptime T: type, items: []T, lessThan: fn (lhs: T, rhs: T) bool) T { | 1203 | test "std.sort.min" { |
| | 1204 | testing.expectEqual(@as(i32, 1), min(i32, &[_]i32{1}, asc(i32))); |
| | 1205 | testing.expectEqual(@as(i32, 1), min(i32, &[_]i32{ 1, 2, 3, 4, 5 }, asc(i32))); |
| | 1206 | testing.expectEqual(@as(i32, 2), min(i32, &[_]i32{ 9, 3, 8, 2, 5 }, asc(i32))); |
| | 1207 | testing.expectEqual(@as(i32, 1), min(i32, &[_]i32{ 1, 1, 1, 1, 1 }, asc(i32))); |
| | 1208 | testing.expectEqual(@as(i32, -10), min(i32, &[_]i32{ -10, 1, 10 }, asc(i32))); |
| | 1209 | testing.expectEqual(@as(i32, 7), min(i32, &[_]i32{ 6, 3, 5, 7, 6 }, desc(i32))); |
| | 1210 | } |
| | 1211 | |
| | 1212 | pub fn max(comptime T: type, items: []const T, lessThan: fn (lhs: T, rhs: T) bool) T { |
| 1204 | var i: usize = 0; | 1213 | var i: usize = 0; |
| 1205 | var biggest = items[0]; | 1214 | var biggest = items[0]; |
| 1206 | for (items[1..]) |item| { | 1215 | for (items[1..]) |item| { |
| ... | @@ -1211,6 +1220,15 @@ pub fn max(comptime T: type, items: []T, lessThan: fn (lhs: T, rhs: T) bool) T { | ... | @@ -1211,6 +1220,15 @@ pub fn max(comptime T: type, items: []T, lessThan: fn (lhs: T, rhs: T) bool) T { |
| 1211 | return biggest; | 1220 | return biggest; |
| 1212 | } | 1221 | } |
| 1213 | | 1222 | |
| | 1223 | test "std.sort.max" { |
| | 1224 | testing.expectEqual(@as(i32, 1), max(i32, &[_]i32{1}, asc(i32))); |
| | 1225 | testing.expectEqual(@as(i32, 5), max(i32, &[_]i32{ 1, 2, 3, 4, 5 }, asc(i32))); |
| | 1226 | testing.expectEqual(@as(i32, 9), max(i32, &[_]i32{ 9, 3, 8, 2, 5 }, asc(i32))); |
| | 1227 | testing.expectEqual(@as(i32, 1), max(i32, &[_]i32{ 1, 1, 1, 1, 1 }, asc(i32))); |
| | 1228 | testing.expectEqual(@as(i32, 10), max(i32, &[_]i32{ -10, 1, 10 }, asc(i32))); |
| | 1229 | testing.expectEqual(@as(i32, 3), max(i32, &[_]i32{ 6, 3, 5, 7, 6 }, desc(i32))); |
| | 1230 | } |
| | 1231 | |
| 1214 | pub fn isSorted(comptime T: type, items: []const T, lessThan: fn (lhs: T, rhs: T) bool) bool { | 1232 | pub fn isSorted(comptime T: type, items: []const T, lessThan: fn (lhs: T, rhs: T) bool) bool { |
| 1215 | var i: usize = 1; | 1233 | var i: usize = 1; |
| 1216 | while (i < items.len) : (i += 1) { | 1234 | while (i < items.len) : (i += 1) { |