此代码是否适用于完美洗牌算法?我总是尝试生成一个从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什么?
当你说“n = 0”时,你的意思是n在while循环之前等于0吗?如在中,数组中没有元素? – DanielGibbs