From 5e99e07f40d898e1110194f91f2001c5c2bc5fa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Schw=C3=B6rer?= Date: Wed, 21 Dec 2022 13:00:39 +0100 Subject: [PATCH] v0.0.38 --- langext/sort.go | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 langext/sort.go diff --git a/langext/sort.go b/langext/sort.go new file mode 100644 index 0000000..ef68fa8 --- /dev/null +++ b/langext/sort.go @@ -0,0 +1,39 @@ +package langext + +import "sort" + +func Sort[T OrderedConstraint](arr []T) { + sort.Slice(arr, func(i1, i2 int) bool { + return arr[i1] < arr[i2] + }) +} + +func SortStable[T OrderedConstraint](arr []T) { + sort.SliceStable(arr, func(i1, i2 int) bool { + return arr[i1] < arr[i2] + }) +} + +func IsSorted[T OrderedConstraint](arr []T) bool { + return sort.SliceIsSorted(arr, func(i1, i2 int) bool { + return arr[i1] < arr[i2] + }) +} + +func SortSlice[T any](arr []T, less func(v1, v2 T) bool) { + sort.Slice(arr, func(i1, i2 int) bool { + return less(arr[i1], arr[i2]) + }) +} + +func SortSliceStable[T any](arr []T, less func(v1, v2 T) bool) { + sort.SliceStable(arr, func(i1, i2 int) bool { + return less(arr[i1], arr[i2]) + }) +} + +func IsSliceSorted[T any](arr []T, less func(v1, v2 T) bool) bool { + return sort.SliceIsSorted(arr, func(i1, i2 int) bool { + return less(arr[i1], arr[i2]) + }) +}