【发布时间】:2018-01-02 21:52:04
【问题描述】:
我正在尝试对以下数组进行手动排序。
这里的问题是,从“for-loop enumuration”(表示为 //(2))读取项目与将其作为下标读取(表示为 //(1))时,结果会有所不同。这可能是隐藏在我眼前的一个小问题。珍惜你的时间。
var mySortArray : Array<Int> = []
mySortArray = [1,5,3,3,21,11,2]
for (itemX,X) in mySortArray.enumerated() {
for (itemY,Y) in mySortArray.enumerated() {
// if mySortArray[itemX] < mySortArray[itemY] // (1)
if X < Y // (2)
{
//Swap the position of item in the array
mySortArray.swapAt(itemX, itemY)
}
}
}
print(mySortArray)
// Prints [1, 2, 3, 3, 5, 11, 21] ( for condition // (1))
// Prints [2, 1, 3, 5, 11, 3, 21] ( for condition // (2))
mySortArray = [1,5,3,3,21,11,2]
print("Actual Sort Order : \(mySortArray.sorted())")
// Prints Actual Sort Order : [1, 2, 3, 3, 5, 11, 21]
【问题讨论】:
-
方法(2)不起作用,因为
enumerated()创建的序列不反映枚举期间对数组所做的更改。
标签: arrays swift sorting enumerate