gpt4 book ai didi

sorting - Swift 返回将对数组进行排序的索引(类似于 numpy argsort)

转载 作者:行者123 更新时间:2023-11-28 07:09:08 24 4
gpt4 key购买 nike

<分区>

我正在尝试返回与排序值相对应的数组索引。例如,

let arr = [7, 10, -3]
let idxs = argsort(arr) // [2, 0, 1]

我的尝试有效但并不完美,并且仅适用于 CGFloat。我正在寻找一些方法来改进功能,使其通用且更易于阅读。代码看起来很难看,

func argsortCGFloat( a : [CGFloat] ) -> [Int] {

/* 1. Values are wrapped in (index, values) tuples */
let wrapped_array = Array(Zip2(indices(a),a))

/* 2. A comparator compares the numerical value from
two tuples and the array is sorted */
func comparator(a: (index : Int, value : CGFloat), b: (index : Int, value : CGFloat)) -> Bool {
return a.value < b.value
}
var values = sorted(wrapped_array, comparator)

/* 3. The sorted indexes are extracted from the sorted
array of tuples */
var sorted_indexes: [Int] = []
for pair in values {
sorted_indexes.append(pair.0)
}

return sorted_indexes
}

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