0
以下のデータでは、選択したインデックスを値の密度(値/重量)降順で並べ替える必要があります。均等になると、私は体重、昇順で「等しい」の間でソートしたい。Swift 3:最初のソート値が等しいときに2番目のソートキーを指定する方法は?
let values = [40, 50, 60, 80, 100, 120, 20, 10]
let weights = [20, 80, 60, 160, 50, 120, 10, 5]
// Selection array
let arr2 = [ 0, 1, 1, 0, 1, 0, 0, 1]
// Get index from selection
var selectedIndexes = [Int]()
arr2.enumerated().forEach { (index, element) in
if element == 1 {
selectedIndexes.append(index)
}
}
// without any sorting
print(selectedIndexes) // [1, 2, 4, 7]
// sort descending by value density
selectedIndexes.sort(by: { Double(values[$0])/Double(weights[$0]) > Double(values[$1])/Double(weights[$1]) })
print(selectedIndexes) // [4, 7, 2, 1]
インデックス4と7の両方の値の密度は2.0です。 値の密度が等しい場合、どのようにして重みを昇順に並べ替えることができますか? selectedIndexes配列に[7、4、2、1]があります
これらの値を含む構造体またはクラスを作成する必要があります。このような並列配列を持つことは、お尻の本当の痛みです。 – Alexander