Algoritmo eficiente para o valor máximo e seu índice na matriz Swift
Eu escrevi um algoritmo é Swift para encontrar o valor máximo e seu índice em uma matriz Swift. Isso é inspirado na função "max.m" no Matlab & Octave.
Os especialistas aqui poderiam sugerir uma maneira de melhorar esse algoritmo em termos de velocidade? Quero dizer, poderia ser feito mais rápido ou você acha que essa é uma abordagem razoável para matrizes grandes (às vezes 15000 amostras).
public func max (y: [Double]) -> (Int, Double) {
let inLen = y.count
var out = Double()
var outp = Int()
if (1 == inLen) { // if only one element
out = y[0]
outp = 0
} else if (0 == inLen) { // if no elements
out = -1
outp = -1
} else {
out = y[0]
outp = 0
for ii in 1...inLen-1 {
if (out<y[ii]){
out = y[ii]
outp = ii
}
}
}
return (outp, out)
}
// Call the function
let y: [Double] = [3, 4, 5, 6, 7, 8, 9, 100, 100, 11, 12, 13, 14, 15, -8, -7, -7, 99]
let (ind, value) = max(y: y)
print(ind) // 7
print(value) // 100.0