【问题标题】:Binary Merge sort & Natural Merge sort二元归并排序和自然归并排序
【发布时间】:2015-06-10 04:42:01
【问题描述】:

我知道家庭作业问题在这里不是最受欢迎的,但我完全不知所措。我正在做一项要求我们制定多种排序算法的作业。然而,其中之一让我发疯。我在网上找不到任何例子,而且他在课堂上也没有完全复习。我们必须做一个看起来像这样的合并排序:

void mergeSort(int * a, int s, bool n = false)

其中a是数组,s是所述数组的大小,n为二元归并排序为假,自然归并排序为真。问题是,我找不到什么是自然归并排序和二元归并排序。我只是找到合并排序。而且他们都要求更多的变量。

我只是想问是否有人知道我在哪里可以找到这两种不同类型归并排序的好解释。

【问题讨论】:

  • 在归并排序的维基百科页面上都提到了它们。通过网络搜索“二元自然合并排序”找到。
  • 你碰巧知道我能在哪里找到例子吗?我查看了 wiki,不幸的是它对我没有太大帮助。
  • 这是家庭作业。您应该从抽象描述中找出代码,而不是复制示例。

标签: c++ arrays algorithm sorting mergesort


【解决方案1】:

我不是该主题的专家,但维基百科页面似乎是一个很好的起点 http://en.wikipedia.org/wiki/Merge_sort

它包含一个关于自然归并排序的部分和一个例子。

关于二元归并排序:

一种名为二元归并排序的变体使用二元插入排序进行排序 由 32 个元素组成的组,然后使用归并排序进行最终排序。它 将小数据集上的插入排序速度与速度相结合 大型数据集的归并排序

插入排序可以在这里阅读:http://en.wikipedia.org/wiki/Insertion_sort

其中包含关于二进制插入排序的选择。

关于变量。 “自下而上合并排序”(自然合并排序是其中的一种变体)的维基百科示例具有以下签名:

void BottomUpSort(A[], B[], n)

其中 A 是要排序的数组,n 是它的长度。 B 是一个工作数组,如果 a 正确读取算法,它也需要长度为 n。无论如何,它可以在算法的开头创建并在最后删除。

【讨论】:

    猜你喜欢
    • 2016-09-11
    • 2012-05-03
    • 2010-12-08
    • 2020-04-22
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    相关资源
    最近更新 更多