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 实现。有几种重载,但我认为您正在寻找采用键数组和值数组的重载。
我正在尝试将我的一些旧 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 实现。有几种重载,但我认为您正在寻找采用键数组和值数组的重载。