我需要对不同大小的数组进行排序。这些尺寸为:10个元素,50个元素,100个元素,500个元素和1000个元素。对于这些数组中的每一个,我应该使用一个已经排序的数组,另一个部分排序的数组,以及一个随机的数组。我应该使用三种类型,如quicksort,插入或bubblesort。我已经工作了2个星期,但似乎无法创建一个调用数组。
答案 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);
}
注意 - from
和to
参数必须位于[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)));
}