我需要对数组进行洗牌,以便所有数组元素都应该更改其位置。
给定一个数组[0,1,2,3]
就可以得到[1,0,3,2]
or [3,2,0,1]
但不是[3,1,2,0]
(因为2
保持不变)。
我想算法不会是特定于语言的,但以防万一,我在 C++ 程序中需要它(并且我不能使用std::random_shuffle
由于附加要求)。
那这个呢?
- 分配一个包含从 0 到 arrayLength-1 的数字的数组
- 打乱数组
- 如果数组中没有索引与其值相等的元素,则继续步骤4;否则从步骤 2 开始重复。
- 使用打乱的数组值作为数组的索引。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)