我想制作一个排序算法..我的矢量应该按照加号顺序打印..我制作了这段代码,但它不起作用......
public class User {
public static int[] sort(int[] a) {
if (a == null) {
return null;
} else {
for(int i=0; i<a.length; i++) {
if(a[i++] < a[i]) {
int x= a[i];
int y=a[i++];
a[i++] =x;
a[i] = y;
} else {
return a;
}
}
}
return a;
}
public static void main(String[] args) {
int a[] = { 4, 6, 8, 2, 4, 1 };
System.out.println(Arrays.toString(sort(a)));
}
}
我收到错误输出..我得到了[4, 6, 6, 6, 4, 1]
如何更正代码?
谢谢
答案 0 :(得分:0)
更改
public static int sort(int[] a) {
if (a == null) {
return 0;
}
...
return a;
到
public static int[] sort(int[] a) {
if (a == null) {
return null;
}
...
return a;
这样你的方法就会返回整个数组,而不只是单个值。
&安培;
System.out.println(sort(a));
到
System.out.println(Arrays.toString(sort(a)));
以便正确打印数组。
修改强>
您只需使用Arrays.sort():
即可对数组进行排序int a[] = { 4, 6, 8, 2, 4, 1 };
Arrays.sort(a);
System.out.println(Arrays.toString(a));
答案 1 :(得分:0)
您的排序算法未得到很好的实施。 试试这个:
for(int i=0; i<a.length; i++) {
for(int j=i+1; j<a.length; j++) {
if(a[j] < a[i]) {
int x= a[i];
a[i] = a[j];
a[j] = x;
}
}
}