如何解决C++ 希望为类数据类型定义一个 mergeSort 函数定义了类 List 并且 list 有两个成员变量 size 和 *values
说明
实现描述的成员函数对值列表进行排序。这个函数是一个空函数,它不接受任何参数作为输入。它的唯一目的是将列表的所有当前值按升序排序。
建议的解决方案
归并排序算法是一种递归算法。您的基本情况是,如果您被要求对大小为 1 的列表或大小为 0 的空列表进行排序,那么该列表已经被简单地排序了,因此只需返回并且什么都不做。
但是如果列表有 2 个或更多项目,您需要
将此实例拆分为 2 个大小相同的列表,分别是 这个列表的一半。 在这两个新复制的子列表上递归调用 sort()。 在此实例上调用 merge() 并返回已排序的下限和上限 列出副本。 附加要求
拆分时需要重用子列表复制构造函数 列出为递归排序和合并的两半。 当然,您需要重用您的 merge() 函数来执行 合并现在排序的半子列表。 您需要使用递归归并排序来实现这种排序。
我已经定义了所需的子列表复制构造函数和合并函数。以下是我的代码,但抛出错误,甚至没有运行测试。你能帮我弄清楚是什么问题吗?
void List::sort()
{
if (size == 0 || size == 1)
{
return;
}
int mid = size / 2;
List list;
List lower(list,mid);
List upper(list,mid +1,size -1);
lower.sort();
upper.sort();
merge(lower,upper);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。