From b9c46947d273d82fe45b64d265bc819e06fc61f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Schw=C3=B6rer?= Date: Sun, 29 Jan 2023 01:10:14 +0100 Subject: [PATCH] v0.0.64 --- langext/sort.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/langext/sort.go b/langext/sort.go index ef68fa8..c56a1d7 100644 --- a/langext/sort.go +++ b/langext/sort.go @@ -37,3 +37,21 @@ func IsSliceSorted[T any](arr []T, less func(v1, v2 T) bool) bool { return less(arr[i1], arr[i2]) }) } + +func SortBy[TElem any, TSel OrderedConstraint](arr []TElem, selector func(v TElem) TSel) { + sort.Slice(arr, func(i1, i2 int) bool { + return selector(arr[i1]) < selector(arr[i2]) + }) +} + +func SortByStable[TElem any, TSel OrderedConstraint](arr []TElem, selector func(v TElem) TSel) { + sort.SliceStable(arr, func(i1, i2 int) bool { + return selector(arr[i1]) < selector(arr[i2]) + }) +} + +func IsSortedBy[TElem any, TSel OrderedConstraint](arr []TElem, selector func(v TElem) TSel) { + sort.SliceStable(arr, func(i1, i2 int) bool { + return selector(arr[i1]) < selector(arr[i2]) + }) +}