为了指导性目的,我写了一些计时代码。一组代码使用冒泡排序(证明O(n ^ 2)的复杂性),另一组代码使用快速排序(O(n log n))。功能签名不同;我的冒泡排序接受一个int数组并返回一个int数组,而quicksort接受一个int数组并就地对其进行修改-避免返回。这是我计时操作的代码:
charset
我只需要一个TimeOperation函数,但是我不太清楚如何处理两个不同的委托。我尝试将第一个参数设为泛型,但是我无法通过委托来做到这一点-或者至少我不知道该怎么做。如果我将其设为通用名称,那么它会令pymysql.connect
感到不满意,我真的不希望这样保留代码,因为唯一不同的部分是我正在计时的实际功能。
关于这种情况下如何遵循DRY原则的任何建议?
答案 0 :(得分:2)
您可以为快速排序创建其他方法,该方法具有与气泡排序方法相同的签名:
public int[] QuickSortEntry(int[] arr)
{
QuickSort(arr, 0, arr.Length - 1);
return arr;
}
或者您甚至可以这样做:
ArrayFunc qSort = arr => { QuickSort(arr, 0, arr.Length - 1); return arr; };
...并将其传递到您的计时器方法中。