2017-04-24 6 views
3

私はスウィフトに高階関数を使用してクイックソートを書いていますが、それはここで クイックソートのコードをエラー

error: 'Int' is not convertible to '[Int]' 
return quickSort(array: lesser) + [pivot] + quickSort(array: greater) 

を与えているとされて与えていますライン。

+0

私はちょうどあなたの[Linuxのコード](https:// swift)をテストしました。これは冗長タイプのキャストを伴わないものです。 sandbox.bluemix.net)、エラーは同じまま - クロスプラットホームを最高で;-) –

+0

ありがとう@PauloMattos – Rahul

答えて

3

それが動作しない理由を私は(私はそれが必要だと思う)を伝えることはできませんが、私はこの

return 
    quickSort(array: lesser) as [Int] + 
    [pivot] + 
    quickSort(array: greater) 
この

return quickSort(array: lesser) + [pivot] + quickSort(array: greater) 

を交換し

にそれを修正する方法を伝えることができます

+0

私はあなたの答えを編集して、エラーを修正するためにもう1つの構文的な砂糖を追加しました。 – Rahul

0

実際にコンパイルしている関数の戻り値の型を含む複数の演算式では、コンパイラはデータ型と混乱しています。

おそらくコンパイラを助けるための方法はたくさんあります。

func quickSort(array: [Int]) -> [Int] 
{ 
    if array.count < 2 { return array } 

    let pivotValue = array.first! 
    let lesser  = array.filter{ $0 < pivotValue } 
    let greater = array.filter{ $0 > pivotValue } 
    let pivot  = Array(repeating: pivotValue, 
           count: array.count - lesser.count - greater.count) 

    return quickSort(array:lesser) + pivot + quickSort(array:greater) 
} 
関連する問題