Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在一行中为多个变量指定多个值_Java_Python_Insertion Sort - Fatal编程技术网

Java 在一行中为多个变量指定多个值

Java 在一行中为多个变量指定多个值,java,python,insertion-sort,Java,Python,Insertion Sort,我正在尝试编写以下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

我正在尝试编写以下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]))
将numpy导入为np
def主要(项目):
对于范围内的i(1,len(项目)):
j=i
当j>0且项目[j]
这是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.util.array;
公共类分拣机{
公共静态void main(字符串参数[]){
分拣机分拣=新分拣机();
int[]项={4,78,23,24,56,7,9};
排序.插入排序(项目);
}
公共void insertionSort(int[]项){
对于(int i=1;i0&&items[j]
我已经将问题缩小到上面(在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等价物吗?欢迎解释。谢谢。

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

int temp = items[j];
items[j] = items[j-1];
items[j-1] = temp;
发生的情况是,您丢失了原始值,因此循环的每次迭代都会将项[j]的值复制到项[j-1]中


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

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

int temp = items[j];
items[j] = items[j-1];
items[j-1] = temp;
发生的情况是,您丢失了原始值,因此循环的每次迭代都会将项[j]的值复制到项[j-1]中


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

因此基本上您希望交换这两个索引。你可以这样做

int tmp=项目[j];
项目[j]=项目[j-1];
项目[j-1]=tmp;

因此基本上您希望交换这两个索引。你可以这样做

int tmp=项目[j];
项目[j]=项目[j-1];
项目[j-1]=tmp;

Python在某些方面很好,不是吗?Python在某些方面很好,不是吗?