- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试使用 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/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!