如何在Java中对各种大小的数组进行排序?像10,20,50,100,1000元素?

时间:2012-05-11 07:15:36

标签: java

我需要对不同大小的数组进行排序。这些尺寸为:10个元素,50个元素,100个元素,500个元素和1000个元素。对于这些数组中的每一个,我应该使用一个已经排序的数组,另一个部分排序的数组,以及一个随机的数组。我应该使用三种类型,如quicksort,插入或bubblesort。我已经工作了2个星期,但似乎无法创建一个调用数组。

1 个答案:

答案 0 :(得分:1)

以下是一些实用程序方法,用于创建测试数组并验证排序方法是否正常工作:

public static Integer[] createRandomArray(int size) {
    Integer[] result = new Integer[size];
    Random randomGenerator = new Random();
    for(int i = 0; i < size; i++) {
        result[i] = randomGenerator.nextInt(size*100);
    }
    return result;
}

public static Integer[] createSortedArray(int size) {
    return createPartiallySortedArray(size, 0, size);
}

public static Integer[] createPartiallySortedArray(int size, int from, int to) {
    Integer[] result = createRandomArray(size);
    Arrays.sort(result, from, to);
    return result;
}

public static boolean isSorted(Integer[] original, Integer[] sorted) {
    Integer[] clonedOriginal = Arrays.copyOf(original, original.length);
    Arrays.sort(clonedOriginal);
    return Arrays.equals(clonedOriginal, sorted);
}

注意 - fromto参数必须位于[0..size-1] from < to范围内。


您可以使用以下片段创建阵列,将其输入分拣机并验证结果:

public static void main(String[] args) {
    List<Integer[]> arrays = new ArrayList<Integer[]>();
    int size = 100;
    arrays.add(createRandomArray(size));
    arrays.add(createPartiallySortedArray(size, 0, size/2));
    arrays.add(createSortedArray(size));

    List<Integer[]> result = doBubbleSort(arrays);  // <- implement that method
    for (int i = 0; i < arrays.size(); i++)
        System.out.println(isSorted(arrays.get(i), result.get(i)));
}