我試圖做一個簡單的排序功能以迅速操場,但我得到了以下錯誤:
Playground execution failed: error: <EXPR>:20:22: error: '[Int]' is not a subtype of '@lvalue $T2'
swap(&a,k,j) //Here in &a
我寫了下面的代碼:
let arr:[Int] = [1,3,53,24,52,1,234,5,3]
func swap(inout a:[Int], num1:Int, num2:Int){
var value = a[num1]
a[num1] = a[num2]
a[num2] = value
}
func sort(a:[Int]){
var j = 0
var k = 0
for (k = j ; k<=a.count; k++){
if(k != a.count){
if(a[k] < a[j]){
swap(&a,k,j)
}
}else{
j++;
}
}
}
print ("\(sort(arr)) is the array")
任何想法爲什麼這不起作用?我不正確地引用陣列,謝謝!
UPDATE: 正如馬丁 - [R指出了錯誤,這裏是更正後的代碼:
var arr:[Int] = [1,3,53,24,52,1,234,5,3]
以及排序功能:
func sort(inout a:[Int]) -> [Int]{
var j = 0
var k = 0
for (k = j ; k <= a.count; k++){
if(k != a.count){
if(a[k] < a[j]){
swap(&a,j,k)
}
}else{
j++;
k = j
}
}
return a
}
最後:
print ("\(sort(&arr)) is the array")
您的新sort()函數對傳遞的數組* *進行排序並返回它。通常你要麼排序傳遞的數組,並且不返回任何內容*或*保持傳遞的數組不變,並返回一個有序數組。在第二種情況下,您不需要inout參數。 – 2014-09-12 20:04:45