我的代码工作正常,但我陷入了一个部分。我希望能够打印每个交换,而不是打印最终的排序。有人可以帮助我吗?
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/