复制和排序数组中的错误

时间:2016-12-30 12:54:38

标签: java arrays sorting methods

这是原始问题

创建方法private static int[] sort(int[] arr){ int i,z=0,temp,y,x; int[] secondArray = new int [arr.length]; for (i=0; i<arr.length; i++){ secondArray[z] = arr[i]; } for (y=0; y < secondArray.length; y++) { for (x = 0; x<secondArray.length; x++){ if (secondArray[y] < secondArray[x]){ temp = secondArray[y]; secondArray[y] = secondArray[x]; secondArray[x] = temp; } } } return secondArray; } ,返回一个新的排序数组(递增顺序),包含与arr相同的整数集。数组arr应保持不变。

这是方法:

int[] n = {1,4,5,343,45,67};

输入:1 4 5 343 45 67

输出:"items": [ { "id": "1", "father_name": "YYY", "surname": "XXX", "name": "abc", }, { "id": "1", "father_name": "YYY", "surname": "XXX", "name": "abc", }, { "id": "2", "father_name": "ZZZ", "surname": "UUU", "name": "abc", }, ]

对数组arr进行排序很容易,但问题是要保持arr不变。所以我尝试创建一个新数组,并对新数组进行排序,但它不起作用。

请求帮助。

3 个答案:

答案 0 :(得分:2)

如果您不需要手动对数组进行排序:

private static int[] sort(int[] arr){
    int[] secondArray = new int[arr.length];
    for (int i=0; i < arr.length; i++){
        secondArray[i] = arr[i];
    }

    return Arrays.sort(secondArray);
}

答案 1 :(得分:1)

试试这个。您始终可以选择一些不同的方法来排序数组。 你使用的Bubblesort是最容易但不是最好的。
https://www.cs.cmu.edu/~adamchik/15-121/lectures/Sorting%20Algorithms/sorting.html

    int[] old = {1,4,5,343,45,67};
    int[] newOne = Arrays.copyOf(old, old.length);//copy array
    Arrays.sort(newOne);//sort

    System.out.println(Arrays.toString(old));
    System.out.println(Arrays.toString(newOne));

答案 2 :(得分:0)

private static int[] sort(int[] arr){
    return IntStream.of(arr).sorted().toArray();
}