Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 想以不同的方式实现合并排序算法吗_Algorithm_Sorting_Language Agnostic_Mergesort - Fatal编程技术网

Algorithm 想以不同的方式实现合并排序算法吗

Algorithm 想以不同的方式实现合并排序算法吗,algorithm,sorting,language-agnostic,mergesort,Algorithm,Sorting,Language Agnostic,Mergesort,合并排序将列表划分为最小的单元(1个元素),然后将每个元素与相邻列表进行比较,以对两个相邻列表进行排序和合并。最后对所有元素进行排序和合并。 我想以这样一种方式实现合并排序算法:它将列表划分为两个元素的最小单元,然后对它们进行排序和合并? 我怎样才能实现它 合并排序(A、p、r) 如果p

合并排序将列表划分为最小的单元(1个元素),然后将每个元素与相邻列表进行比较,以对两个相邻列表进行排序和合并。最后对所有元素进行排序和合并。 我想以这样一种方式实现合并排序算法:它将列表划分为两个元素的最小单元,然后对它们进行排序和合并? 我怎样才能实现它

合并排序(A、p、r)

  • 如果p
  • 然后q=FLOOR[(p+r)/2]//分步
  • 合并(A,p,q)//征服步骤
  • 合并(A,q+1,r)//征服步骤
  • 合并(A,p,q,r)//征服步骤

  • 类似于p我以前做过一些听起来像这样的事情。这里有两种变体

    变体1:浏览列表,对每一对进行排序。然后浏览列表,合并每一对。然后每对4s,依此类推。当您合并整个列表时,您就完成了

    变体2:有一个排序数组堆栈。每个元素合并到底部数组中,然后级联,但向下合并直到只有一个,或者从顶部开始的第二个元素大于顶部。添加最后一个元素后,通过合并来折叠数组

    在我使用变体2的情况下,我有大量的数据流。我将前几堆排序的数组保存在内存中,然后将它们存储在磁盘上。这将导致引用的良好局部性和磁盘的高效使用。(你问我为什么不使用现成的解决方案?我输入的数据集比我必须处理的磁盘大,其中有自定义的合并逻辑,排序真的不难写。)

    “类似于p