出于好奇,我一直在查看sort标准库中的包和slices即将添加到标准库中的实验包的源代码。这两个包都定义了一个IsSorted函数,通过验证相邻元素是否有序来检查列表是否已排序。然而,这是相反的。
我创建了一个小的复制品,松散地基于通用slices包。我的实验确实表明反向版本更快。
func IsSortedForward[T any](slice []T, compare func(a, b T) int) bool {
for i := 0; i < len(slice) - 1; i++ {
if compare(slice[i], slice[i+1]) > 0 {
return false
}
}
return true
}
func IsSortedForward2[T any](slice []T, compare func(a, b T) int) bool {
n := len(slice) - 1
for i := 0; i < n; i++ {
if compare(slice[i], slice[i+1]) > …Run Code Online (Sandbox Code Playgroud)