【发布时间】:2023-01-21 21:16:10
【问题描述】:
我有 2 个函数,一个交换数组中 2 个元素的值,另一个能够找到数组切片中最小数字的索引,现在当我使用 then 两者来查找排序数组时,我无法这样做是因为我无法理解如何使用交换功能
交换函数
func swapData(arr: [Int], firstIndex: Int, secondIndex: Int) -> [Int] {
var temp = arr
var a = firstIndex
var b = secondIndex
var x = temp[a]
temp[a] = temp[b]
temp[b] = x
return temp
}
查找 minIndex 的函数
func indexOfMinimum(arr:[Int], startIndex: Int) -> Int {
var newArray = arr[startIndex...]
var minValue = arr[newArray.startIndex]
var minIndex = 0
for i in newArray.startIndex + 1 ..< newArray.endIndex {
if newArray[i] < minValue {
minValue = newArray[i]
minIndex = i - startIndex
}
}
return minIndex
}
尝试使用以上 2 对数组进行排序的函数
func selectionSort(arr: [Int]) {
var temp = arr
var minIndex = 0
for i in temp.startIndex ..< temp.endIndex {
minIndex = indexOfMinimum(arr: Array(temp[i..<temp.count]), startIndex: temp.startIndex)
swapData(arr: Array(temp[i..<temp.count]), firstIndex: temp.startIndex
, secondIndex: minIndex)
}
}
var demoList = [18, 6, 1,66, 44, 78, 9, 22, 1,23]
selectionSort(arr: demoList)
我不断得到原始的未排序数组
【问题讨论】:
标签: swift