Skip to main content
 首页 » 编程设计

java之在一行中为多个变量分配多个值

2025年05月04日24sky-heaven

我正在尝试编写与以下 Python 倒置排序算法等效的 Java:

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 方法,我将得到以下返回值:[4, 78, 78, 78, 78, 78, 78]。

有人能告诉我如何编写 Python 的 items[j], items[j-1] = items[j-1], items[j] 的 Java 等价物吗?欢迎解释。谢谢。

请您参考如下方法:

那是因为当您在 items[j] 和 items[j-1] 之间交换时,您需要使用 temp 变量来存储其中一个值。它应该是这样的:

int temp = items[j]; 
items[j] = items[j-1]; 
items[j-1] = temp; 

发生的事情是您丢失了原始值,因此循环的每次迭代都将 items[j-1] 的值复制到 items[j] 中。

这就是您获得输出的方式。