从最小到最大Java对数组进行排序的方法

时间:2014-08-13 11:06:02

标签: java sorting

您好我正在尝试创建一个查找数组模式的方法。要做到这一点,我首先需要创建一个方法,将列表从最小到最大排序,但我不确定我在第一时间做错了什么

public class Mode {
    public int [] sort(int[] asd) {
        int[] sorted = new int[10];
        for (int i = 0; i < asd.length; i++) {
            for (int j = 1; j < asd.length; j++) {
                if ( (asd[i] > asd[j]) && (i != j) ) {
                    int temp = asd[j];
                    asd[j] = asd[i];
                    asd[i] = asd[temp];
                }
                else
                    continue;
            }
        }
        return sorted;
    }

    public static void main(String[] args) {
        Mode list1 = new Mode();
        int[] array = {3,2,5,4,1,1,1,1,10,9};
        int[] potato = list1.sort(array);
        for (int i = 0; i < potato.length; i++)
            System.out.print(potato[i]);
    }
}

当我运行它时,我得到0000000000作为输出。我认为这个方法有问题,因为我正在返回一个已经初始化的数组,但没有放入那里。我如何(在我的嵌套for循环中)在排序数组中添加每个数字?

3 个答案:

答案 0 :(得分:1)

您的代码中存在一些问题,它们按以下方式修复:

public class Mode {
    public int [] sort(int[] asd) {
        int[] sorted = asd.clone();
        for (int i = 0; i < sorted.length; i++) {
            for (int j = i+1; j < sorted.length; j++) {
                if ( (sorted[i] > sorted[j]) && (i != j) ) {
                    int temp = sorted[j];
                    sorted[j] = sorted[i];
                    sorted[i] = temp;
                }
            }
        }
        return sorted;
    }

    public int findMode(int[] sorted) {
        // do whatever you want to do here...
        return 0;
    }

    public static void main(String[] args) {
        Mode list1 = new Mode();
        int[] array = {3,2,5,4,1,1,1,1,10,9};
        int[] potato = list1.sort(array);
        for (int i = 0; i < potato.length; i++) {
            System.out.print(potato[i] + ",");
        }
        System.out.println();
        System.out.print(list1.findMode(potato));
    }
}

要解释一下,之前您正在排序asd。现在我们正在排序sorted,它以asd

的副本开头

j的循环应该从i+1开始。

“交换”操作的最后一部分应为sorted[i] = temp

答案 1 :(得分:0)

您要在排序方法中分配asd的元素,然后返回数组sorted,这在您的sort方法中永远不会改变。

此外,您应该将sorted数组初始化为与asd相同的大小。

答案 2 :(得分:0)

您可以使用 java.util.Arrays 按升序对数组进行排序

public class SortArray {
    public static void main(String[] args) {
        int[] array = { 3, 2, 5, 4, 1, 1, 1, 1, 10, 9 };
        Arrays.sort(array);
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }
    }
}

上述代码段的输出将为

1 1 1 1 2 3 4 5 9 10