Я очень новичок в Swift, и мне хотелось знать, как я должен модифицировать Int
, содержащийся в моем Int[]
? Я сделал это так, как будто бы сделал это на Java, но это, очевидно, не работает: я получаю ошибку компиляции Cannot assign to immutable value of type 'Int'
.Быстрое изменение массива Int для алгоритма InsertionSort
Вот мой код:
import Foundation
func createRandomArray(length: Int) -> [Int]{
var random = [Int]()
for index in 0...length{
random.append(Int(arc4random_uniform(100)))
}
return random
}
func insertionSort(toSort: [Int]) -> [Int]{
var length = toSort.count
for index in 1...length-1{
var key = toSort[index]
var previous = index-1
while(previous>0 && toSort[previous]>key){
// ERROR IS THERE
toSort[previous+1] = toSort[previous]
previous--
}
}
return toSort
}
var array = createRandomArray(10)
print(array)
print(insertionSort(array))
Я думал, что с помощью var
вместо let
даст изменяемый объект так, поэтому я немного потерял.
Спасибо за помощь
EDIT:
Я получил этот рабочий ответ еще, благодаря @vacawama:
import Foundation
func createRandomArray(length: Int) -> [Int]{
var random = [Int]()
for index in 0...length{
random.append(Int(arc4random_uniform(100)))
}
return random
}
func insertionSort(var toSort: [Int]) -> [Int]{
for firstIterator in 1...toSort.count-1{
var currentValue = toSort[firstIterator]
var previousPosition = firstIterator-1
while(previousPosition>=0 && toSort[previousPosition]>currentValue){
swap(&toSort[previousPosition+1], &toSort[previousPosition])
previousPosition--
}
}
return toSort
}
var array = createRandomArray(10)
print(array)
print(insertionSort(array))
Очень круто! Отлично работает! –