我有一个递归函数,可以调用其中的方法。我希望能够在同一测试方法中调用我的其他排序方法。我还有其他4种方法(例如mergeSort
)。我将如何循环遍历方法调用,以便测试人员在一个方法(selectionSort
)上运行所有排序测试(所有不同大小的数组),然后转到下一个方法(mergeSort
并继续从size = 100
开始再次测试它并继续从那里开始?
public void testSorts(){
for(int size = 100; size<=100000; size = size*10){
String[] data;
long start;
long time;
UI.println("\n\n======Selection Sort=======\n");
data = createArray(size);
//printData(data);
start = System.currentTimeMillis();
selectionSort(data);
// insertionSort(data);
// bubbleSort(data);
// mergeSort(data);
// quickSort(data);
// quickSort2(data);
time = System.currentTimeMillis() - start;
UI.printf("Number of items: %,d\n", data.length);
UI.printf("Sorted correcetly: %b\n", testSorted(data));
UI.printf("Time taken: %.2f s\n", time/1000.0);
UI.println("\n=======DONE=========\n");
}
}
答案 0 :(得分:1)
简而言之:使用策略模式。
使用方法Sorter
创建界面sort
。
为每个排序方法创建类。
创建Sorter[]
并旋转它。
答案 1 :(得分:0)
创建一个接口 SortingAlgorithm
,它将具有sort(String[])
方法,并将由不同的类实现 - 每个算法一个。
现在,使用一个接受SortingAlgorithm
作为参数并调用algorith.sort(data)
的方法。
(例如,您可以使用public void testSorts(SortingAlgorithm algorithm)
方法调用单个算法,即作为参数传递的算法。
将调用相关算法。