-2
私はSwiftでマージソートアルゴリズムを実装中です。以下は 私はleftArray
とrightArray
宣言でスウィフトアレイの添字エラー
func mergeSort(unsortedArray: [Int]) -> [Int] {
guard unsortedArray.count > 1 else { return unsortedArray }
let middleIndex = unsortedArray.count/2
let leftArray = mergeSort(unsortedArray: unsortedArray[0..<middleIndex])
let rightArray = mergeSort(unsortedArray: unsortedArray[middleIndex..<unsortedArray.count])
return merge(leftPile: leftArray, rightPile: rightArray)
}
を作った機能ですが、私はエラーを取得すると言って、
Playground execution failed: error: MergeSort.xcplaygroundpage:4:59: error: cannot subscript a value of type '[Int]' with an index of type 'CountableRange<Int>'
let leftArray = mergeSort(unsortedArray: unsortedArray[0..<middleIndex])
^
MergeSort.xcplaygroundpage:4:59: note: overloads for 'subscript' exist with these partially matching parameter lists: (Int), (Range<Int>), (Range<Self.Index>), (ClosedRange<Self.Index>), (CountableClosedRange<Self.Index>)
let leftArray = mergeSort(unsortedArray: unsortedArray[0..<middleIndex])
は、誰かがこっちの問題を説明できますか?答えのキーは、私は以下の方法で実装すべきだと言いますが、配列内で配列をラップする理由はわかりません。
let leftArray = mergeSort(unsortedArray: Array(unsortedArray[0..<middleIndex]))
let rightArray = mergeSort(unsortedArray: Array(unsortedArray[middleIndex..<unsortedArray.count]))
だから、彼は 'Array(unsortedArray [0 ..
'unsortedArray [0 ..
matt
@OrkhanAlikhanov彼は "答えの鍵"を見ているので、彼はすることができます。彼の唯一の疑問は_why_と思われる。それは私が答えている質問です。 – matt