有人能告诉我这段代码的问题是什么吗?

时间:2016-02-01 22:33:36

标签: java

public static int[] sortIntegers(int[] array) {
    int n = array.length;
    int temp = 0;

    for (int k = 0; k < n - 2; k++) {
        //controls how many passes is needed to sort the entire array
        int test=0;
        for (int i = 0; i < n - k - 1; i++) {
            //controls the amount of swaps that is needed for each pass
            //ascending order
            if (array[i] > array[i + 1])
                //swap array[i] and array[i+1]
                temp = array[i];
            array[i] = array[i + 1];
            array[i + 1] = temp;
            test=3;
        }
        if(test==0){
            break;
        }
    }
    return array;
}

public static void printArray(int[] array){
    for(int i=0; i<=array.length-1; i++){
        System.out.println("Element " + i + " is " + array[i]);
    }
}

所以我试图按升序对数组进行排序,但似乎没有工作。另外我的课程出于某种原因说要创建一个新的sortedIntegers数组,但我不明白你为什么要这样做只需要改变传递的数组。我的朋友告诉我,创建一个新的数组是更简单的方法,但我觉得我没有得到什么......

2 个答案:

答案 0 :(得分:3)

这些行:

            if (array[i] > array[i + 1])
                //swap array[i] and array[i+1]
                temp = array[i];
            array[i] = array[i + 1];
            array[i + 1] = temp;

请勿交换array[i]array[i+1]。它实际上只是将array[i]分配给temp。随后的两行无条件执行。

你需要围绕它们的大括号:

            if (array[i] > array[i + 1]) {
                //swap array[i] and array[i+1]
                temp = array[i];
                array[i] = array[i + 1];
                array[i + 1] = temp;
            }

答案 1 :(得分:0)

不要互换阵列[i]&#39;和&#39;数组[i + 1]&#39;。它实际上只是分配了数组[i]&#39;温度随后的两行无条件执行。

确保你的代码是这样的......在它们周围加上大括号。

if (array[i] > array[i + 1]) {
    //swap array[i] and array[i+1]
    temp = array[i];
    array[i] = array[i + 1];
    array[i + 1] = temp;
}