java - 通过每遍打印数组

标签 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]);
        }
    }
}

最佳答案

为了在每次交换后打印数组,您所要做的就是在每次交换后调用 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;
}

但是,您的打印方法使得很难区分连续的数组,因为您在新行上打印每个数字。要解决此问题,您可以简单地使用 native .toString() 方法,或者可以在同一行上打印所有值,以空格或逗号分隔,然后使用 \n 或末尾的空 System.out.println() 以移至下一行。

关于java - 通过每遍打印数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42474413/

相关文章:

java - Android - 在 ImageView 中使用大图像或使用不同大小的图像

java - JComboBox,itemStateChanged

java - Android:在 TabHost Activity 中显示不确定的进度条

java - 将 Java 字符串中的 ASCII 代码替换为等效字符

java - 由于变量未初始化,将图像添加到 JPanel 时出错

java - Intellij 13 在调试时不保存/编译

java - onActivityCreated/onStart/onViewCreated 方法中的 getView() 出现 NullPointerException 警告

java - 计算文本区域中的单词数

Java replaceALL 字符串

java - iText:在可见签名上显示签名详细信息