0

我需要对不同大小的数组进行排序。这些尺寸是:10 个元素、50 个元素、100 个元素、500 个元素和 1000 个元素。对于这些数组大小中的每一个,我应该使用一个已经排序的数组、另一个部分排序的数组和一个随机的数组。我应该使用三种排序,例如快速排序、插入或冒泡排序。我已经为此工作了 2 周,但似乎无法创建对数组的调用。

4

1 回答 1

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)));
}
于 2012-05-11T07:38:23.497 回答