将一个数组进行随机再排列

JerryXia 发表于 , 阅读 (0)

我们在开发第一个app的时候遇到的一个比较有趣的算法,这种将一个数组重新进行随机排序的问题并不罕见,但是因为是初学者,所以在探讨这个算法的过程中也纠结了很久,当然最后的算法也是参考借鉴了且听风吟博主的一篇文章:http://wsjiang.iteye.com/blog/1775341 ,在此鸣谢!

问题的解决:

1、假设想要将2~7这6个数字随机排序成一个数组,这里我们设置min为该范围的最小值2,max为该范围的上限7,n为想要在这个范围中取出多少个数字组成一个数组,当然当n等于范围的长度len即6时,那么得到的就是将原来的6个数字重新随机排序一遍。

2、为了方便我们引进一个初始化数组source,并将刚刚范围中的所有数字依次存进该数组中,则初始化数组source为{2,3,4,5,6,7}。

3、为了方便我们同样再引进另一个数组result作为最后返回的数组。在这里我们知道一开始len=6,那么就随机取得一个随机数index(0<=index<=len-1),接下来就要在source数组中找到index位置上的元素放入到result数组的第0位,这时应该将len自减,同时在source数组中将source[index]替换为source[len]。