Arrays 如何交换奇数数组?

Arrays 如何交换奇数数组?,arrays,swift,swap,Arrays,Swift,Swap,如何交换奇数数组?每次数组为奇数时,索引都超出范围。如果最后一个数组是奇数的,它不会进行交换,我怎么能有一个检查器呢 var list = [1,2,3,4,5,6,7,8,9,10,11] if list.count > 0 { for index in 2..<list.count { if index % 2 == 0 { list.swapAt(index, index + 1) } } } var

如何交换奇数数组?每次数组为奇数时,索引都超出范围。如果最后一个数组是奇数的,它不会进行交换,我怎么能有一个检查器呢

var list = [1,2,3,4,5,6,7,8,9,10,11]

if list.count > 0 {
    for index in 2..<list.count {
        if index % 2 == 0 {
            list.swapAt(index, index + 1)
        }
    }
}
var list=[1,2,3,4,5,6,7,8,9,10,11]
如果list.count>0{

对于2..中的索引,进行交换,直到
list.count-1
,这样它就不会超出列表范围

var list = [1,2,3,4,5,6,7,8,9,10,11]

if list.count > 0 {
    for index in stride(from: 2, to: list.count - 1, by: 2){
         list.swapAt(index,index+1)
    }
}

简单想想。最大索引是
列表。count-1
和要交换的对中第一个的索引必须小于该值。现在只需使用
,而

var index = 0
while index < list.count-1
{
   list.swapAt(index, index+1) // swap current pair
   index += 2                  // increment by 2 to get to next pair
}
var索引=0
而索引
我将用
替换
,如果
的第二个
替换为跨步索引的
(从:2,到:list.count-1,由:2)
。猜测
by:2
甚至没有必要。它只是用来防止
超出范围
错误。我相信第二个
if
是用来交换赔率较高的偶数。结果将是
1,2,4,3,6,5,8,7,10,9,11
。出于某种原因,OP选择不交换第一对。