【发布时间】:2015-03-26 09:23:29
【问题描述】:
let numbers = [1, 6, 3, 9, 4, 6]
let min = minElement(numbers) // 1
let position = find(array, min)!
有没有更好的方法来查找数组中次要元素的位置?循环搜索,这种情况下最快。
min = Int.max
for (index,value) in enumerate(array){
if value < min{
min = value
position = index
}
}
【问题讨论】:
-
“更好的方式”在什么意义上?找到最小值必须遍历所有元素,因此我认为没有什么比显式循环更快的了。
-
minElement 循环获取最小元素,find 循环获取最小元素的位置。我正在寻找一个循环。
-
我的意思是你的第二个解决方案
for (index,value) in enumerate(array) ...对数组进行单次传递。我认为这是最快的方法。 -
好,我知道这是更好的方法。谢谢。
-
其实答案取决于数组有多大以及数字是如何分布的。如果可能在数组中“早期”找到最小值(例如,如果您在 0 .. 9 范围内有 10000 个数字),那么您的第一个解决方案(minElement + find)可能会更快。