これは、下から上へのソートです。ループを繰り返している間は、配列内の最小の数で置換され、これが最後まで続きます。未解決の識別子 - inループロジック
ご覧のとおり、私はストライドを使用するようにリファクタリングしています。残念ながらvar lowest = firstIndex
は私にいくつかの問題を与えています。
私はこの機能をストライドの右手で行うことができるはずですか? stride: through
の代わりにstride: to
を使用する必要があります。そのチップのTimに感謝します。私はそれがこのように動作するようになった
func selOrganize(myList: Array<Int>) -> Array<Int> { 1
var extract = myList
for firstIndex in 0..<extract.count {
var lowest = firstIndex
for var secondIndex = firstIndex + 1; secondIndex < extract.count; secondIndex++ {
if extract[lowest] > extract[secondIndex] {
lowest = secondIndex
}
}
if firstIndex != lowest {
swap(&extract[firstIndex], &extract[lowest])
}
}
return extract
}
更新構文
func selOrganize(myList: Array<Int>) -> Array<Int> {
var extract = myList
// var lowest = firstIndex
// Do I need 'key'? Should I declare 'lowest' as a variable here?
// If I do use it here I get a "'lowest' is unmutable because it's a let" error
for (firstIndex, key) in extract.enumerate() {
// < > stride uses 'to' and <= >= stride uses through
for secondIndex in (firstIndex).stride(to: 0, by: +1) {
if extract[lowest] > extract[secondIndex] {
lowest = secondIndex
}
}
if firstIndex != lowest {
swap(&extract[firstIndex], &extract[lowest])
}
}
return extract
}
'a.strideで同じことを行うことができます(へ:B、によって:1)' '.. BallpointBen