Arrays 如何在Swift中找到数组的最高元素?

Arrays 如何在Swift中找到数组的最高元素?,arrays,swift,elements,Arrays,Swift,Elements,有人能解释一下如何在Swift 2.2中获得数组的最高元素吗 例如,假设我有以下代码: let myArray: [Int] = [2, 1, 6, 3, 5 ,7, 11] 如何检索该数组中的3个最高值? 在这种情况下,我想要数字6、7和11 任何帮助都将不胜感激。若要查找最高的3个项目,请对数组进行排序,并使用后缀获取最后3个项目: let myArray = [2, 1, 6, 3, 5 ,7, 11] let highest3 = myArray.sort().suffix(3) pr

有人能解释一下如何在Swift 2.2中获得数组的最高元素吗

例如,假设我有以下代码:

let myArray: [Int] = [2, 1, 6, 3, 5 ,7, 11]
如何检索该数组中的3个最高值? 在这种情况下,我想要数字6、7和11


任何帮助都将不胜感激。

若要查找最高的3个项目,请对数组进行排序,并使用
后缀获取最后3个项目:

let myArray = [2, 1, 6, 3, 5 ,7, 11]
let highest3 = myArray.sort().suffix(3)
print(highest3)  // [6, 7, 11]
let lowest3 = myArray.sort().prefix(3)
print(lowest3)  // [1, 2, 3]
对于3个最低的项目,使用
前缀

let myArray = [2, 1, 6, 3, 5 ,7, 11]
let highest3 = myArray.sort().suffix(3)
print(highest3)  // [6, 7, 11]
let lowest3 = myArray.sort().prefix(3)
print(lowest3)  // [1, 2, 3]
前缀
后缀
还有一个额外的优点,即如果数组中的项目少于3个,它们不会崩溃。例如,如果您请求
.suffix(3)
,则包含2个项的数组将只返回这两个项

编辑:抱歉,没有阅读完整的问题,此方法只检索一个最高值,这里是一个重新配置的版本,应该可以工作

let myArray: [Int] = [2, 1, 6, 3, 5 ,7, 11, 4, 12, 5]
var myArray2 = myArray
var highestNumbers: [Int] = []

while highestNumbers.count < 3 {
    highestNumbers.append(myArray2.maxElement()!)
    myArray2.removeAtIndex(myArray2.indexOf(myArray2.maxElement()!)!)
    print(highestNumbers)
}
让myArray:[Int]=[2,1,6,3,5,7,11,4,12,5]
var myArray2=myArray
变量最高位数字:[Int]=[]
而最高的数字。计数<3{
highestNumbers.append(myArray2.maxElement()!)
myArray2.removeAtIndex(myArray2.indexOf(myArray2.maxElement())!)
打印(最高数字)
}

它们总是这样排序吗?@ChiefTwoPencils不,它们可以是任何顺序。此任务的一般方法是对序列进行排序(在给定的示例中,它们已经排序)并取第一个/最后一个n项。在某些情况下,避免排序可能是有益的,这实际上取决于细节。解决方案(我指的是第二部分)不是最重要的,但是从计算角度来看,它是最快的。事实上,虽然其他答案确实需要使用时间
O(n log n)
进行排序,但此代码只需要时间
O(n*k)
时间,其中
k
是解决方案中的元素数。我认为投反对票的用户应该解释原因。在我意识到我看错了问题并添加了一个有效的解决方案以找到三个结果之前,我投了反对票