0

我有一个递归函数,它在其中调用一个方法。我希望能够在同一个测试方法中调用我的其他排序方法。我有 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");

    }
}
4

2 回答 2

1

简而言之:使用策略模式。

Sorter使用方法创建接口sort

为每个排序方法创建类。

创建Sorter[]并旋转它。

于 2012-09-10T15:16:35.760 回答
0

创建一个接口 SortingAlgorithm,它将有一个sort(String[])方法,并将由不同的类实现 - 每个算法一个。

现在,使用一个接受作为参数的方法 aSortingAlgorithm并调用algorith.sort(data)
(例如,您可以拥有public void testSorts(SortingAlgorithm algorithm)将调用单个算法的方法,该算法作为参数传递)。

将调用相关算法。

于 2012-09-10T15:15:47.233 回答