gpt4 book ai didi

ios - 选择排序算法的实现不起作用

转载 作者:搜寻专家 更新时间:2023-11-01 06:07:11 28 4
gpt4 key购买 nike

我正在尝试使用 Swift 提高我对排序算法的了解。

swap 函数本身运行良好,但是当我想在 selectionSort 函数中使用它时,它并没有按照我的预期进行。 myArray 未排序。

这是我的代码:

func swap(var myArray:[Int], firstIndex: Int, secondIndex: Int) -> [Int] {
let temp = myArray[firstIndex]
myArray[firstIndex] = myArray[secondIndex]
myArray[secondIndex] = temp

return myArray
}


func indexOfMinimum( myArray:[Int], startIndex: Int ) -> Int {
// Set initial values for minValue and minIndex,
// based on the leftmost entry in the subarray:

var minValue = myArray[startIndex]
var minIndex = startIndex

// Loop over items starting with startIndex,
// updating minValue and minIndex as needed:

for(var i = minIndex + 1; i < myArray.count; i++){
if( myArray[i] < minValue ) {
minIndex = i
minValue = myArray[i]
}
}
return minIndex
}

// This function is not working properly

func selectionSort(myArray: [Int]) {
var x: Int
for ( var i = 0; i < myArray.count; i++) {
x = indexOfMinimum( myArray,startIndex: i)
swap(myArray, firstIndex: i, secondIndex: x)
}
}

var myArray2 = [22, 11, 99, 88, 9, 7, 42]
selectionSort(myArray2)

myArray2 // that is the result that I'm getting [22, 11, 99, 88, 9, 7, 42]

//while I should get [7, 9, 11, 22, 42, 88, 99]

最佳答案

您的函数正在接受一个参数。你在函数中修改了参数,最后你没有返回它,所以你的函数本质上是死的。

我不太了解编译器优化,但如果我是一名编译器,我会删除 selectionSort(myArray2) 调用,因为它确实什么都不做。您的 swap 函数返回一个值,但是当您在 selectionSort 中调用它时,您不会使用返回值。 Xcode 应该为此给出一个错误。

在函数结束时,没有任何修改,因为所有被修改的变量都在函数中分配,并在函数结束时超出范围。

您可能在 selectionSort 中尝试做的是:

myArray = swap(...);

你可能在主要部分试图做的是

myArray = selectionSort(...);

关于ios - 选择排序算法的实现不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34478394/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com