我刚开始使用 java,当时正在做一个关于排列的练习(该练习要求使用数组 a[] 创建 N 个元素的排列,满足 a[i] 不等于 i 的要求。)我创建了以下代码。在测试它时,我意识到有时当 N = 6 时它会进入无限循环。对问题出在哪里有什么想法吗?
public class GoodPerm {
public static void main(String arg[]) {
int n = Integer.parseInt(arg[0]);
int[] guests = new int[n];
for (int i = 0; i < n; i++) {
guests[i] = i;
}
for (int i = 0; i < n; i++) {
int r = i + (int) (Math.random() * (n - i));
int q = guests[r];
guests[r] = guests[i];
guests[i] = q;
if(guests[i] == i){
i --;
}
}
for(int q : guests){
System.out.println(q);
}
}
}
也许代码进入另一个值的中循环,但我没有找到任何其他值。
BIG阳
相关分类