首页 > 解决方案 > 如何解决这个整数数组排序不能按预期工作?

问题描述

尝试这样做,但仍然没有按升序排序。此方法的目的是接收一个整数数组并使用输入整数数组的值创建一个新的整数数组。然后对新创建的数组进行排序。但似乎这种排序方法不起作用。

private static int[] getSortAscend(int[] inputArray) {
    int sortArray[] = inputArray;
    int lngth = sortArray.length;
    
    for(int m = 0; m < lngth; m++) {
        for(int p = m+1; p < lngth; p++) {
            if(sortArray[m] > sortArray[p]) {
                int temp = sortArray[m];
                sortArray[m] = sortArray[p];
                sortArray[p] = temp;
            }
        }
    }
    
    return sortArray;
}

标签: javaarrays

解决方案


This is probably due to you doing int sortArray[] = inputArray;, your sortArray points to the input one, and since you're modifying it, your algorithm will not work (since numbers will keep changing).

Try this:

private static int[] getSortAscend(int[] inputArray) {
    int lngth = sortArray.length;
    int sortArray[] = inputArray.clone();
    
    for(int m = 0; m < lngth; m++) {
        for(int p = m+1; p < lngth; p++) {
            if(sortArray[m] > sortArray[p]) {
                int temp = sortArray[m];
                sortArray[m] = sortArray[p];
                sortArray[p] = temp;
            }
        }
    }
    
    return sortArray;
}

推荐阅读