gpt4 book ai didi

swift - 使用高阶函数排序 : Giving precedence to one element

转载 作者:行者123 更新时间:2023-11-28 10:03:54 27 4
gpt4 key购买 nike

使用无序的 Int 数组:

let numbers = [4, 3, 1, 5, 2]

在 Swift 中,是否可以使用 .sorted { } 对数组进行排序,其中一个项目具有优先级并放置在数组的第一个索引中。那么我们可以得到 [3, 1, 2, 4, 5] 而不是返回 [1, 2, 3, 4, 5]?

最佳答案

你可以像这样声明一个函数:

func sort(_ array: [Int], prioritizing n: Int) -> [Int] {
var copy = array
let pivot = copy.partition { $0 != n }
copy[pivot...].sort()
return copy
}

它使用 partition(by:)功能。

你可以这样使用它:

let numbers = [4, 3, 1, 5, 2]
let specialNumber = 3
sort(numbers, prioritizing: specialNumber) //[3, 1, 2, 4, 5]

下面是一些测试用例:

sort([3, 3, 3], prioritizing: 3)           //[3, 3, 3]
sort([9, 4, 1, 5, 2], prioritizing: 3) //[1, 2, 4, 5, 9]

这是一个仅使用 sorted(by:) 的替代解决方案:

let numbers = [4, 3, 1, 5, 2]
let vipNumber = 3
let result = numbers.sorted {
($0 == vipNumber ? Int.min : $0) < ($1 == vipNumber ? Int.min : $1)
}
print(result) //[3, 1, 2, 4, 5]

关于swift - 使用高阶函数排序 : Giving precedence to one element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57039753/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com