小编sco*_*ore的帖子

为什么标准库中的 IsSorted 会反向迭代切片?

出于好奇,我一直在查看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)

performance benchmarking go

20
推荐指数
2
解决办法
1545
查看次数

标签 统计

benchmarking ×1

go ×1

performance ×1