例数组内有若干个元素,arr = [1,2,3,4,5],使之随机两两配对,若为奇数数量,则有一个元素配空,求一个效率最高的写法
要看你对随机性要求到底有多高,感觉是随机了就好的话,可以考虑 类似洗牌算法,就是随机N次,每次获取数组内2个元素进行位置交换,
然后依次每2个1组取出元素配对。
如果元素本身是比较大的,并不好交换,其实还可以用索引数组的方式(这额外占用一定空间,但处理可能比原数组更快),按原来的方法,交换索引数组的元素顺序,再用索引数组,间接取出配对原数组。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
1 回答3.4k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
有个比较简单的实现
1、首先,数组随机排序
2、然后两两取值得到新数组