我需要从一个浮点数数组中获得2个最大值,即一个最高和一秒钟的最高值。是否有任何简单的方法来获取它们的索引,或者是否需要为此更改数组的结构?
只需对数组排序并取所需值
var array1 = [2.1, 2.2, 2.5, 3.0, 4.2, 2]
var array2 = array1.sort(){ $0 > $1}
//One way
let firstMax = array2[0]
let secondMax = array2[1]
//Second way
let firstMax = array2.removeFirst()
let secondMax = array2.removeFirst()
Run Code Online (Sandbox Code Playgroud)
编辑
如果您想要索引,只需像
let maxPos = array1.indexOf(firstMax)
let secMaxPos = array1.indexOf(secondMax)
Run Code Online (Sandbox Code Playgroud)
如果您对这些事情感到困惑,请遵循以下常规知识。
var max = -1.0, maxPos = -1, secMax = -1.0, secMaxPos = -1
for (index, value) in array1.enumerate() {
if value > max {
max = value
maxPos = index
} else if value > secMax {
secMax = value
secMaxPos = index
}
}
print("max:\(max)->pos:\(maxPos)::secMax:\(secMax)->secMaxPos:\(secMaxPos)")
Run Code Online (Sandbox Code Playgroud)