此代码对于完美的洗牌算法是否正确?我总是试图生成一个从 0 到 n 的数字,并将该数字与数组中的最后一个元素交换,从而减小 n 的范围。但是,当 n=0 时,我得到一个异常。我该如何处理这种情况?
int [] array ={1,2,3,4,5};
Random random = new Random();
int n=array.length;
while(n--!=0)
{
int number = random.nextInt(n);
int temp = array[n];
array[n] = array[number];
array[number] = temp;
}
编辑:如果我将其更改为 --n >0 那么它可以正常工作,但是在这种情况下我是否正确实施了洗牌算法,因为我从来没有为 n=0 做任何事情?