交换特定数组元素的问题
Issue in swapping specific array elements
以下无作业。我只是想写我自己的排列代码。我有一个想法,但是我在将这个想法写成代码时遇到了问题。
例如输入是myArray={1,2,3};
那么输出应该是:
1 2 3
2 1 3
2 3 1
3 2 1
3 1 2
1 3 2
我发现可以通过将第一个元素与第二个元素切换,然后将第二个元素与第三个元素切换(但不完全可能,但我知道我需要这个)。
这就是为什么我的问题是如何在 Java 中执行此操作?
我有 1 2 3
,我想将第一个元素与第二个元素切换,所以我得到 2 1 3
。打印这个。现在我想用第三个元素切换第二个元素,我得到 2 3 1
,打印它。重复 n!
次,其中 n 是 myArray
长度。
我试着用下面的代码来做到这一点,但似乎我离它还很远:(
public class Test{
public static void main(String[] args){
int[] myArray = {1,2,3};
for(int x=0; x<6; x++){
for(int i=0; i<myArray.length-1; i++){
int temp=myArray[i];
myArray[i]=myArray[i+1];
myArray[i+1]=temp;
}
for(int i=0; i<myArray.length; i++){
System.out.print(myArray[i]+" ");
}
System.out.println("");
}
}
}
Output:
2 3 1
3 1 2
1 2 3
2 3 1
3 1 2
1 2 3
虽然我不确定我是否理解正确。
public static void main(String[] args) {
int[] myArray = {1, 2, 3};
for (int i = 0; i < 6; i++) {
print(myArray);
int temp = myArray[i % myArray.length];
myArray[i % myArray.length] = myArray[(i + 1) % myArray.length];
myArray[(i + 1) % myArray.length] = temp;
}
}
private static void print(int[] array) {
for (int anArray : array) {
System.out.print(anArray + " ");
}
System.out.println("");
}
编辑:
注意到了,顺序错了,应该更好:
public static void main(String[] args) {
int[] myArray = {1, 2, 3};
for (int i = 0; i < 6; i++) {
int idx = i % (myArray.length - 1);
print(myArray);
int temp = myArray[idx];
myArray[idx] = myArray[idx + 1];
myArray[idx + 1] = temp;
}
}
以下无作业。我只是想写我自己的排列代码。我有一个想法,但是我在将这个想法写成代码时遇到了问题。
例如输入是myArray={1,2,3};
那么输出应该是:
1 2 3
2 1 3
2 3 1
3 2 1
3 1 2
1 3 2
我发现可以通过将第一个元素与第二个元素切换,然后将第二个元素与第三个元素切换(但不完全可能,但我知道我需要这个)。
这就是为什么我的问题是如何在 Java 中执行此操作?
我有 1 2 3
,我想将第一个元素与第二个元素切换,所以我得到 2 1 3
。打印这个。现在我想用第三个元素切换第二个元素,我得到 2 3 1
,打印它。重复 n!
次,其中 n 是 myArray
长度。
我试着用下面的代码来做到这一点,但似乎我离它还很远:(
public class Test{
public static void main(String[] args){
int[] myArray = {1,2,3};
for(int x=0; x<6; x++){
for(int i=0; i<myArray.length-1; i++){
int temp=myArray[i];
myArray[i]=myArray[i+1];
myArray[i+1]=temp;
}
for(int i=0; i<myArray.length; i++){
System.out.print(myArray[i]+" ");
}
System.out.println("");
}
}
}
Output:
2 3 1
3 1 2
1 2 3
2 3 1
3 1 2
1 2 3
虽然我不确定我是否理解正确。
public static void main(String[] args) {
int[] myArray = {1, 2, 3};
for (int i = 0; i < 6; i++) {
print(myArray);
int temp = myArray[i % myArray.length];
myArray[i % myArray.length] = myArray[(i + 1) % myArray.length];
myArray[(i + 1) % myArray.length] = temp;
}
}
private static void print(int[] array) {
for (int anArray : array) {
System.out.print(anArray + " ");
}
System.out.println("");
}
编辑:
注意到了,顺序错了,应该更好:
public static void main(String[] args) {
int[] myArray = {1, 2, 3};
for (int i = 0; i < 6; i++) {
int idx = i % (myArray.length - 1);
print(myArray);
int temp = myArray[idx];
myArray[idx] = myArray[idx + 1];
myArray[idx + 1] = temp;
}
}