算法题解法: //解法:使用 Fisher-Yates 洗牌来确保所有元素都被随机打乱。 //在洗牌过程中,确保每个元素不会被放回到原位置上。 public static void shuffle(int[] arr) { Random random = new Random(); for (int i = arr.length - 1; i >= 0; i--) { int j = random.nextInt(i + 1); // 确保每个元素不会在原来的位置 if (j == i) { // 如果选择的下标和当前位置相同,选择另一个下标,确保不会是原位置 j = (j + 1) % (i + 1); } //swap int temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } }

相关推荐

牛客网
牛客企业服务