私はジェネリック型を学習しており、ジェネリック QuickSort メソッドを作成したいと考えていました。問題は、クラスが共変ではなく、コードがコンパイルできないことです。問題は Partition メソッドをジェネリックにすることであり、その方法がわかりません。ガイダンスをいただければ幸いです。
public static void Swap<T>(ref T a, ref T b)
{
T temp = a;
a = b;
b = temp;
}
public static int Partition(int[] array, int mid)
{
int midPoint = mid,
upperBound = array.Length - 1,
lowerBound = 0;
while (lowerBound != upperBound)
{
while (midPoint < upperBound)
{
if (array[midPoint] > array[upperBound])
{
Swap<int>(ref array[midPoint], ref array[upperBound]);
midPoint = upperBound;
break;
}
upperBound--;
}
while (midPoint > lowerBound)
{
if (array[midPoint] < array[lowerBound])
{
Swap<int>(ref array[midPoint], ref array[lowerBound]);
midPoint = lowerBound;
break;
}
lowerBound++;
}
}
return midPoint;
}
public static void QuickSort(int[] array,int lower,int upper)
{
int mid = Partition(array, (lower + upper) / 2);
if (upper <= lower)
{
}
else
{
QuickSort(array, mid + 1, upper);
QuickSort(array, lower, mid - 1);
}
}