C# 的 C++ qsort 算法?

C++ qsort algorithm for C#?

我正在尝试将我的一些旧 C/C++ 代码移植到 C#/Unity。在几个地方,我调用了 qsort 函数。这是一个例子:

qsort((void *) CardSort, NumCards, sizeof (CardSort[0]), SortFunction);

其中 SortFunction 是指向我自己的标准函数的指针。这是一个例子:

int SortFunction (const void * a, const void * b)
{
   int i, j, iValue, jValue;
   memcpy (&i, a, 2);
   memcpy (&j, b, 2);
   iValue = TrickValue (i, GetSuit (i));
   jValue = TrickValue (j, GetSuit (j));
   return (iValue - jValue);
}

这只是我需要导入的几个示例中的一个。我尝试使用快速排序算法(轴、左、右)复制它,但我需要修改它的每个实例以反映我不同的 SortFunctions。每一个都是一种痛苦。

我只想编写自己的 qsort 例程,这样我就可以简单地引入我的代码而无需更改,但我无法在网上找到示例。由于我不了解原始 qsort 的内部工作原理,我希望这里有人可以帮助我。

简而言之:是否有 C# 实现,或者有人可以指导我编写自己的实现,它复制了 C/C++ qsort 的功能?

qsort 是一个 QuickSort 实现,AFAIK Array.Sort() 在 C# 中是一个 QuickSort 实现。有几种重载,但我认为您正在寻找采用键数组和值数组的重载。