每次通过打印阵列

时间:2017-02-26 21:23:13

标签: java

我的代码工作正常,但我陷入了一个部分。我希望能够打印每个交换,而不是打印最终的排序。有人能帮助我吗?

public class SelectionSort {

    public static void main(String[] args) {
        int []numbers = {10,5,7,9,1,0,4,6,11,14};
         numSort(numbers);
         printArray(numbers);
    }
    public static int[] numSort(int[] A) {
        for (int i = 0; i <A.length -1 ; i++ ) {
            for (int j=0; j<A.length-1-i; j++ ) {
                if(A[j] > A [j+1]) {
                    int temp = A[j+1];
                    A[j+1] = A[j];
                    A[j]=temp;
                }

            }
        }
        return A;
    }
     public static void printArray(int[] A) {
        for (int i = 0; i<A.length; i++ ) {
            System.out.println(A[i]);
        }
    }
}

1 个答案:

答案 0 :(得分:2)

为了在每次交换后打印数组,你需要做的就是在每次交换后调用printArray()方法,如下所示:

public static int[] numSort(int[] A) {
    for (int i = 0; i <A.length -1 ; i++ ) {
        for (int j=0; j<A.length-1-i; j++ ) {
            if(A[j] > A [j+1]) {
                int temp = A[j+1];
                A[j+1] = A[j];
                A[j]=temp;
                printArray(A);
            }
        }
    }
    return A;
}

但是,您的打印方法使得在连续数组之间很难区分,因为您在新行上打印每个数字。要解决此问题,您只需使用原生.toString()方法,或者您可以在同一行打印所有值,用空格或逗号分隔,并使用\n或空{{1}最后移到下一行。