在一行中为多个变量分配多个值
Assigning multiple values to multiple variables in a single line
我正在尝试编写 Java 等同于以下 Python 倒置排序算法:
import numpy as np
def main(items):
for i in range(1, len(items)):
j = i
while j > 0 and items[j] < items[j-1]:
items[j], items[j-1] = items[j-1], items[j]
j -= 1
print(items)
main(np.array([4, 78, 23, 24, 56, 7, 9]))
这是 Java 版本:
import java.util.Arrays;
public class Sorters {
public static void main(String args[]) {
Sorters sort = new Sorters();
int[] items = {4, 78, 23, 24, 56, 7, 9};
sort.insertionSort(items);
}
public void insertionSort(int[] items) {
for(int i=1 ; i<items.length ; i++) {
int j = i;
while(j>0 && items[j] < items[j-1]) {
items[j] = items[j-1]; // These two lines are
items[j-1] = items[j]; // causing the error
j -=1;
}
}
System.out.println("Sorted array: " + Arrays.toString(items));
}
}
我已将问题缩小到上面(在 Java 方法中)这样评论的两行。
如果我给 Python 函数这个数组:[4, 78, 23, 24, 56, 7, 9]
(例如),一切正常。但是,如果我将相同的数组提供给 Java 方法,我会在 return 中得到:[4, 78, 78, 78, 78, 78, 78]
。
有人能告诉我如何写出 Python 的 items[j], items[j-1] = items[j-1], items[j]
的 Java 吗?欢迎解释。谢谢。
这是因为当您在项目 [j] 和项目 [j-1] 之间交换时,您需要使用 temp
变量来存储其中一个值。应该是这样的:
int temp = items[j];
items[j] = items[j-1];
items[j-1] = temp;
发生的事情是您丢失了原始值,因此循环的每次迭代都将 items[j-1] 的值复制到 items[j] 中。
这就是你得到输出的方式。
所以基本上你想交换两个索引。你可以这样做
int tmp = items[j];
items[j] = items[j-1];
items[j-1] = tmp;
我正在尝试编写 Java 等同于以下 Python 倒置排序算法:
import numpy as np
def main(items):
for i in range(1, len(items)):
j = i
while j > 0 and items[j] < items[j-1]:
items[j], items[j-1] = items[j-1], items[j]
j -= 1
print(items)
main(np.array([4, 78, 23, 24, 56, 7, 9]))
这是 Java 版本:
import java.util.Arrays;
public class Sorters {
public static void main(String args[]) {
Sorters sort = new Sorters();
int[] items = {4, 78, 23, 24, 56, 7, 9};
sort.insertionSort(items);
}
public void insertionSort(int[] items) {
for(int i=1 ; i<items.length ; i++) {
int j = i;
while(j>0 && items[j] < items[j-1]) {
items[j] = items[j-1]; // These two lines are
items[j-1] = items[j]; // causing the error
j -=1;
}
}
System.out.println("Sorted array: " + Arrays.toString(items));
}
}
我已将问题缩小到上面(在 Java 方法中)这样评论的两行。
如果我给 Python 函数这个数组:[4, 78, 23, 24, 56, 7, 9]
(例如),一切正常。但是,如果我将相同的数组提供给 Java 方法,我会在 return 中得到:[4, 78, 78, 78, 78, 78, 78]
。
有人能告诉我如何写出 Python 的 items[j], items[j-1] = items[j-1], items[j]
的 Java 吗?欢迎解释。谢谢。
这是因为当您在项目 [j] 和项目 [j-1] 之间交换时,您需要使用 temp
变量来存储其中一个值。应该是这样的:
int temp = items[j];
items[j] = items[j-1];
items[j-1] = temp;
发生的事情是您丢失了原始值,因此循环的每次迭代都将 items[j-1] 的值复制到 items[j] 中。
这就是你得到输出的方式。
所以基本上你想交换两个索引。你可以这样做
int tmp = items[j];
items[j] = items[j-1];
items[j-1] = tmp;