快速排序模板

dianyancao dianyancao 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
如何将下面的c#快速排序代码翻译成C++代码?
没有写过泛型的快速排序,以前对不同的类型,都写一份代码真的很蛋疼...
private void QuickSort<TValue>(T[] keys, TValue[] values, int left, int right, IComparer<T> 

comparer)
{
do
{
int index = left;
int num2 = right;
T y = keys[index + ((num2 - index) >> 1)];
do
{
try
{
while (comparer.Compare(keys[index], y) < 0)
{
index++;
}
while (comparer.Compare(y, keys[num2]) < 0)
{
num2--;
}
}
catch (IndexOutOfRangeException)
{
throw new ArgumentException(null, "keys");
}
catch (Exception)
{
throw new InvalidOperationException();
}
if (index > num2)
{
break;
}
if (index < num2)
{
T local2 = keys[index];
keys[index] = keys[num2];
keys[num2] = local2;
if (values != null)
{
TValue local3 = values[index];
values[index] = values[num2];
values[num2] = local3;
}
}
index++;
num2--;
}
while (index <= num2);
if ((num2 - left) <= (right - index))
{
if (left < num2)
{
this.QuickSort<TValue>(keys, values, left, num2, comparer);
}
left = index;
}
else
{
if (index < right)
{
this.QuickSort<TValue>(keys, values, index, right, comparer);
}
right = num2;
}
}
while (left < right);
...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
dianyancao
新手乐园 33,315 成员 41,769 内容