小编典典

如何快速稳定地对数组排序?

swift

我一直在使用sort()函数,但它混合了相对顺序。

这就是我的代码的样子。

recipes.sort { $0.skill.value <= $1.skill.value }

Swift API表示:

排序算法不稳定。不稳定排序可能会更改比较相等的元素的相对顺序。

如何更改此值,以使相对顺序保持与以前相同?


阅读 319

收藏
2020-07-07

共1个答案

小编典典

let sortedArray = (recipes as NSArray).sortedArray(options: .stable, usingComparator: { (lhs, rhs) -> ComparisonResult in
    let lhs = (lhs as! Recipe)
    let rhs = (rhs as! Recipe)
    if lhs.skill.value == rhs.skill.value {
        return ComparisonResult.orderedSame
    } else if lhs.skill.value < rhs.skill.value {
        return ComparisonResult.orderedAscending
    } else {
        return ComparisonResult.orderedDescending
    }
})

从这里获取:https : //medium.com/@cocotutch/a-swift-sorting-
problem-e0ebfc4e46d4

2020-07-07