Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 自定义洗牌算法-Swift_Ios_Swift_Algorithm - Fatal编程技术网

Ios 自定义洗牌算法-Swift

Ios 自定义洗牌算法-Swift,ios,swift,algorithm,Ios,Swift,Algorithm,我有两个数组,比如 let array1 = ["A", "B", "C", "D","E"] let array2 = ["1", "2", "3", "4", "5", "6"] 我想保持数组1的顺序,合并数组和洗牌 输出将类似于 shuffledArray = ["1", "A", "3", "B", "2", "5", "C", "4", "D", "E", "6"] 如何以最小的复杂性实现这一点这是我们正在研究的 var array1 = ["A", "B", "C", "D","

我有两个数组,比如

let array1 = ["A", "B", "C", "D","E"]
let array2 = ["1", "2", "3", "4", "5", "6"]
我想保持数组1的顺序,合并数组和洗牌

输出将类似于

shuffledArray = ["1", "A", "3", "B", "2", "5", "C", "4", "D", "E", "6"]
如何以最小的复杂性实现这一点

这是我们正在研究的

var array1 = ["A", "B", "C", "D","E"]
let array2 = ["1", "2", "3", "4", "5", "6"]

array2.forEach {

    let index = Int(arc4random_uniform(UInt32(array2.count)))

    array1.insert($0, at: index)
}

print(array1)

要获得良好的复杂性:

使输出数组具有所需的大小-这比逐个增加其长度或插入更有效。不要为小长度而烦恼

如果您需要某种程度的一致性,请使用像Bresenham这样的算法,在Bresenham算法的每一步中选择第一个或第二个阵列x或y步


要以随机顺序从第二个数组中选择元素-使用洗牌

为什么要合并它们?对于游戏来说,数组长度总是差1或相等,所以特殊精灵需要在游戏中随机出现。所以我混合了这两个节点,但这并不能解释为什么需要将它作为一个数组:/我投票重新打开这个问题,因为它并不宽泛,下面的答案质量不好,这是开着的,因为每次插入都是开着的,让index=Intarc4random\u uniformUInt32array2.count使用新的Swift 4语法会更快:让index=Int.randomin:0。。