【发布时间】:2023-03-10 01:25:02
【问题描述】:
我想使用IComparable & IComparer 进行灵活排序,并将排序方法作为参数Object[] & IComparer 输入。而且我只能放链接类型,原始类型数组怎么放?
private void QuickSort(Object[] comparables, int low, int high)
{
if (comparables.Length == 0)
{
return;
}
if (low >= high)
{
return;
}
int middle = low + (high - low) / 2;
Object backbone = comparables[middle];
int i = low;
int j = high;
while (i <= j)
{
//while (comparables[i].CompareTo(backbone) < 0)
while (_comparator.Compare(comparables[i], backbone) < 0)
{
i++;
}
//while (comparables[j].CompareTo(backbone) > 0)
while (_comparator.Compare(comparables[j], backbone) > 0)
{
j--;
}
if (i <= j)
{
Object temp = comparables[i];
comparables[i] = comparables[j];
comparables[j] = temp;
i++;
j--;
}
}
if (low < j)
{
QuickSort(comparables, low, j);
}
if (high > i)
{
QuickSort(comparables, i, high);
}
}
public void QuickSort(Object[] comparables, SortOrders order)
{
_comparator = SortFactory.Instance.GetComparer(order);
QuickSort(comparables, 0, comparables.Length - 1);
}
【问题讨论】:
标签: c# algorithm sorting computer-science quicksort