gpt4 book ai didi

c# - 编辑合并排序以按 C# 降序排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:29:46 25 4
gpt4 key购买 nike

我正在阅读 friend 寄给我的类(class)作业样本,以便为明年的大学类(class)作业做好准备。我一直在尝试创建一个排序和搜索系统来处理各种数据。为此,我创建了一个合并排序系统,可以按升序对我的数据进行排序。但是,我不确定如何编辑此算法,以便它可以按降序排序。谁能解释一下这是如何做到的?

当前算法处理字符串 值。

由于这是基于一项大学任务,因此需要我自己实际编写排序和搜索算法的代码,而不是使用 Visual Studio 提供的内置函数。

static public void MainMerge<T>(T[] values, int left, int mid, int right) where T : IComparable<T>
{
int c = values.Length;
T[] temp = new T[c];
int i, eol, num, pos;

eol = (mid - 1);
pos = left;
num = (right - left + 1);

while ((left <= eol) && (mid <= right))
{
if (values[left].CompareTo(values[mid]) < 0)
temp[pos++] = values[left++];
else
temp[pos++] = values[mid++];
}

while (left <= eol)
temp[pos++] = values[left++];

while (mid <= right)
temp[pos++] = values[mid++];

for (i = 0; i < num; i++)
{
values[right] = temp[right];
right--;
}
}

static public void SortMerge<T>(T[] values, int left, int right) where T : IComparable<T>
{
int mid;

if (right > left)
{
mid = (right + left) / 2;
SortMerge(values, left, mid);
SortMerge(values, (mid + 1), right);

MainMerge(values, left, (mid + 1), right);
}
}

最佳答案

你只需要改变这个:values[left].CompareTo(values[mid]) < 0为此:values[left].CompareTo(values[mid]) >= 0 .合并阶段是唯一使用比较的地方。

您还可以将比较器传递给排序函数以允许自定义比较谓词。

还有另一种方法:您可以使用当前算法并反转结果。

关于c# - 编辑合并排序以按 C# 降序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43723019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com