Java 数组交换
Java array swap
在我的第二个数组中,我试图交换我的数组编号,但我不知道该怎么做。
例如,在我的第一个数组中,数字如下所示:
1.5 2.5 3.5 ....19.5 20.5
因此在下一个数组中需要如下所示:
1.5 20.5 2.5 19.5 3.5 ....
我让它看起来像这样:
20.5 19.5 ......3.5 2.5 1.5
这是我的代码:
public static void main(String[] args) {
double A[] = new double[20];
int i ;
double K, C;
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
System.out.print("K=");
try {
K = Double.parseDouble(br.readLine());
}
catch (Exception ex) {
System.out.println("input-output error");
return;
}
Random r = new Random();
i=0;
if (K<=0){
do{
A[i]= r.nextDouble()*20;
i++;
}while (i<20);
}else{
i=2;
A[0]=K;
A[1]=K+1;
do {
A[i]= A[i-1]+A[i-2];
i++;
}while (i<20);
}
System.out.println("A:");
for (i=0; i<20; i++) {
System.out.printf("%.2f\t", A[i]);
if (i==9) System.out.println();
if (i==19) System.out.println();
}
for (i=1; i<10; i++) {
C = A[i-1];
A[i] = A[19-i];
A[19-i] = C;
}
System.out.println("\nB:");
for (i=0; i<20; i++) {
System.out.printf("%.2f\t", A[i]);
if (i==9) System.out.println();
if (i==19) System.out.println();
}
}
}
你并不是真正的"swapping",但交换是你所做事情的一部分。
你需要两个"indexes",一个从前到后遍历数组,另一个从后到前遍历数组。当两个索引 "meet in the middle" 你就完成了。
那么你的算法看起来像:
- 将前面的索引向后移动(跳过前面的值)
- 交换两个索引的值。
- 将前面的索引向后移动(离开交换值)
- 将后面的索引移到前面。 (下车交换价值)
- 将后面的索引移到前面(跳过后面的值)
重复直到两个索引在中间相遇。
没有。您不会得到代码示例。这有点太像家庭作业了,但我希望这能有所帮助。
在我的第二个数组中,我试图交换我的数组编号,但我不知道该怎么做。
例如,在我的第一个数组中,数字如下所示:
1.5 2.5 3.5 ....19.5 20.5
因此在下一个数组中需要如下所示:
1.5 20.5 2.5 19.5 3.5 ....
我让它看起来像这样:
20.5 19.5 ......3.5 2.5 1.5
这是我的代码:
public static void main(String[] args) {
double A[] = new double[20];
int i ;
double K, C;
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
System.out.print("K=");
try {
K = Double.parseDouble(br.readLine());
}
catch (Exception ex) {
System.out.println("input-output error");
return;
}
Random r = new Random();
i=0;
if (K<=0){
do{
A[i]= r.nextDouble()*20;
i++;
}while (i<20);
}else{
i=2;
A[0]=K;
A[1]=K+1;
do {
A[i]= A[i-1]+A[i-2];
i++;
}while (i<20);
}
System.out.println("A:");
for (i=0; i<20; i++) {
System.out.printf("%.2f\t", A[i]);
if (i==9) System.out.println();
if (i==19) System.out.println();
}
for (i=1; i<10; i++) {
C = A[i-1];
A[i] = A[19-i];
A[19-i] = C;
}
System.out.println("\nB:");
for (i=0; i<20; i++) {
System.out.printf("%.2f\t", A[i]);
if (i==9) System.out.println();
if (i==19) System.out.println();
}
}
}
你并不是真正的"swapping",但交换是你所做事情的一部分。
你需要两个"indexes",一个从前到后遍历数组,另一个从后到前遍历数组。当两个索引 "meet in the middle" 你就完成了。
那么你的算法看起来像:
- 将前面的索引向后移动(跳过前面的值)
- 交换两个索引的值。
- 将前面的索引向后移动(离开交换值)
- 将后面的索引移到前面。 (下车交换价值)
- 将后面的索引移到前面(跳过后面的值)
重复直到两个索引在中间相遇。
没有。您不会得到代码示例。这有点太像家庭作业了,但我希望这能有所帮助。