Я попытался написать только простую функцию Bubble-сортировки:Почему не этот [Int] -Element типа 'Int'?
func bubbleSort(array: [Int]) -> [Int] {
while !isSorted(array) {
for index in 1..<array.count {
if array[index - 1] > array[index] {
let temp: Int = array[index]
array[index] = array[index - 1]
array[index - 1] = temp
}
}
}
return array
}
Чтобы проверить, когда массив отсортирован он использует:
func isSorted(array: [Int]) -> Bool {
for index in 1..<array.count {
if array[index - 1] > array[index] {
return false
}
}
return true
}
Я использовал http://swiftstub.com/ для компиляции кода, но он дал меня следующие сообщения об ошибке:
<stdin>:17:17: error: '@lvalue $T11' is not identical to 'Int'
array[index] = array[index - 1]
^
<stdin>:18:17: error: '@lvalue $T8' is not identical to 'Int'
array[index - 1] = temp
^
(Если вы хотите, чтобы проверить его на сайте: http://swiftstub.com/385904096/)
Как array[index]
и array[index - 1]
не оба типа Int
, и как они могут быть даже разных типов?
Не передает ли этот массив по ссылке, что означает, что он изменит исходную версию массива? –
Вы должны использовать '&' operator - прочитать обновленный ответ, но также прочитать связанную документацию – Antonio
Ну, точно ... Предположим, что я не хотел передавать массив по ссылке, чтобы исходная версия не была изменилось. Как мне это сделать? –