浮動小数点数の配列から2つの最大値を取得する必要があります。つまり、1つの最高値と1つの最高値を取得する必要があります。インデックスを取得する簡単な方法はありますか、これを構造化するには配列を変更する必要がありますか?スワイプで浮動小数点数の配列から最大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()
EDIT
を取る
let maxPos = array1.indexOf(firstMax)
let secMaxPos = array1.indexOf(secondMax)
これらのものと混同している場合は、以下のように通常の基本事項に従ってください。
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)")
これはあなたのコードは良いと短いですが、私にインデックスを提供していません。 –
ええ、私は答えを更新しました、それをチェックしてください。 –
あなたは(インデックス、値)が含まれているタプルの配列を作成するためにenumerate()
を使用して、2つの最大の値を見つけるために、値によってその配列を並べ替えることができます。
let arr: [Float] = [1.2, 3.14, 1.609, 2.718, 0.3]
// Create an array of (index, value) tuples sorted by value
// in decreasing order
let result = arr.enumerate().sort { $0.1 > $1.1 }
print(result)
[(1, 3.1400001), (3, 2.71799994), (2, 1.60899997), (0, 1.20000005), (4, 0.300000012)]
let (topIndex, top) = result[0]
print("top = \(top), index = \(topIndex)")
let (secondIndex, second) = result[1]
print("second = \(second), index = \(secondIndex)")
second = 2.718, index = 3
あなたのプレイgorundでみてください= [2.01、3.95,1.85,2.65,1.6]
varが= item.sort({> $ 1 $ 0})
ソートVARアイテム
print(ソート済み)
基本的な考え方は、配列をループして最大と2番目に大きな項目を選択することです。
読みにくいかもしれないいくつかのショートコード:
let myFloatArray : [Float] = ...
let top2 = myFloatArray.enumerated().reduce(((-1, Float.nan), (-1, Float.nan)), combine: { t, v in
// Check if value is larger than first item in tuple
if (!(v.1 <= t.0.1)) {
// Check if value is larger than second item in tuple
if (!(v.1 <= t.1.1)) {
// Return with new value as largest
return (t.1, v)
} else {
// Return with new value as next largest
return (v, t.1)
}
}
// Return old result
return t
})
以上の明示的な変数名を持つ:
var largestIndex = -1;
var largestValue = Float.nan;
var secondLargestIndex = -1;
var secondLargestValue = Float.nan;
for index in 0..<myFloatArray.count {
let value = myFloatArray[index];
if (!(value <= secondLargestValue)) {
if (!(value <= largestValue)) {
secondLargestValue = largestValue;
secondLargestIndex = largestIndex;
largestValue = value;
largestIndex = index;
} else {
secondLargestValue = value;
secondLargestIndex = index;
}
}
}
- 1. 最大値は何ですか?浮動小数点数を表示する小数点以下の桁数(PHP)
- 2. Node.jsの最大安全浮動小数点数のNode.jsで
- 3. タプルのリストの浮動小数点数の最大値を取得しますか?
- 4. CSS - 最大幅までの浮動小数点
- 5. 配列内の配列から最大値を取得する
- 6. 2D配列の数値の平均値、最小値、最大値の取得
- 7. 8個の浮動小数点値の最大値/最小値を計算する方法
- 8. アクセスクエリで複数の最大カウント値を取得するにはどうすればよいですか?
- 9. 浮動小数点数は浮動小数点数ですか?
- 10. html形式の最小値と最大値を小数点以下に設定するにはどうすればよいですか?
- 11. numpy配列の中で最大の2次元スライスを得るにはどうすればよいですか?
- 12. 浮動小数点数をHTMLで正しく配置するにはどうすればよいですか?
- 13. 浮動小数点から取得される値は0.0ですか?
- 14. 浮動小数点数列の次の値はどのようにして得られますか?
- 15. Pythonで2つの浮動小数点値を比較する最速の方法はどれですか?
- 16. 文字列から最小値/最大値を取得する方法は?
- 17. 浮動小数点数を制限値以下にクリップするにはどうすればよいですか?
- 18. Tensorflowテンソルから2番目の最大値を取るにはどうすればよいですか?
- 19. 未設定の浮動小数点と値が0の浮動小数点を区別するにはどうすればよいですか?
- 20. MySQLの浮動小数点数で100万を超える値を格納できる最大の価値
- 21. informatica最小値と最大値データベースから動的に取得する
- 22. 2つの整数を分割するときに浮動小数点値を取得するにはどうすればよいですか? (PHP)
- 23. wavを浮動小数点型配列バッファに変換するにはどうすればいいですか?
- 24. バイナリ浮動小数点を10進小数に変換するにはどうすればよいですか?
- 25. toLocalStringで小数点以下2桁の値を取得するにはどうすればよいですか?
- 26. 配列の最小値と最大値
- 27. 配列の最大値と最小値
- 28. 配列の最小値/最大値
- 29. 配列の最大値と最小値
- 30. 配列から最小値と最大値を見つける
ソートと最初の2を取得しますか? –