我的代码工作正常,但我陷入了一个部分。我希望能够打印每个交换,而不是打印最终的排序。有人能帮助我吗?
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]);
}
}
}
答案 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}最后移到下一行。