在矢量中排序数字并按加入顺序打印它们

时间:2016-01-10 12:23:58

标签: java

我想制作一个排序算法..我的矢量应该按照加号顺序打印..我制作了这段代码,但它不起作用......

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]

如何更正代码?

谢谢

2 个答案:

答案 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;
      }
   }
}