繁体   English   中英

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);
}

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

我只想编写自己的 qsort 例程,这样我就可以简单地拉入我的代码不变,但我无法在网上找到示例。 由于我对原始 qsort 的内部运作一无所知,我希望这里有人可以帮助我。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM