问题标签 [mergesort]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
403 浏览

c# - 如何重构这个例程以避免使用递归?

所以我在C#中编写了一个合并排序作为练习,虽然它有效,但回顾代码,还有改进的空间。

基本上,算法的第二部分需要一个例程来合并两个排序列表

这是我的实现方式太长,可能需要一些重构:

当然,可以通过删除recursion等来改进/缩短此例程。甚至还有其他方法可以合并 2 个排序列表。所以任何重构都是受欢迎的。

虽然我确实有答案,但我很好奇其他程序员将如何改进这个例程。

谢谢!

0 投票
4 回答
32265 浏览

java - 多线程合并排序

有人可以给我一个链接或为我提供多线程合并排序的java代码吗?

使用执行器的首选!

非常感谢!

0 投票
1 回答
935 浏览

c++ - Mergesort - 尝试分配向量时抛出 std::bad_alloc

女士们先生们,下午好。所以,这不是我犯错误的日子。在 C++ 中实现 Mergesort(不是就地),我在代码上遇到了真正的麻烦,不知道为什么。函数的倒数第二行将 的mergeSort()结果分配给merge()整数向量result。这一行(实际分配,而不是函数)会引发bad_alloc错误,我不知道为什么。

互联网表明这bad_alloc主要是由于内存不足错误而引发的,但情况并非如此,因为它第一次被调用是在 500 个整数的向量上,这应该远不及太多内存(那是什么,比如2 Kb 在 32 位整数上?)。我假设我在为 C++ 做一些愚蠢和不正确的事情,但我不知道是什么。我尝试调用what()异常,但这只是返回它的名称。编码:

如果我重新编写merge函数以仅在函数期间对其进行引用result和编辑,它可以正常工作,但我想让代码尽可能接近为合并排序提供的“标准”伪代码。

我感谢任何帮助,谢谢。

0 投票
1 回答
375 浏览

algorithm - 使用就地合并进行合并排序

A[] -> 1 3 5 7 2 4 6 8 //

lb=0,mid-1=3,mid+1=4,ub=7;

a=3,b=7,ab=7;

第一次迭代

a=3,b=6,ab=6;


第二次迭代

swap(A[ab],A[a]) // int t; 我将用于临时存储

1 3 5 6 2 4 7 8

b=5,ab=5; 排序(A,lb,mid-1); // 使用冒泡排序


第三次迭代

交换(A[ab],A[a])

1 3 5 4 2 6 7 8

b=5,ab=4

sort(A,lb,mid-1) // 使用冒泡排序


这是使用就地合并进行合并排序的正确方法吗?这是我第一次尝试就地合并。如果方法不正确,有人可以建议我。

0 投票
0 回答
381 浏览

c# - 在 C# 中动态计算外部合并排序的块大小

我正在重构 C# 中的外部合并排序。当前实现使用 50mb 的固定块大小。我想查询性能计数器并动态计算一个好的块大小。我只是不确定要使用哪些计数器?我是否可以获得总可用内存并使用其中的一部分,或者我是否可以找到仅对我的进程可用的内存并使用它?

谢谢,尼尔

0 投票
1 回答
10000 浏览

assembly - MIPS中使用堆栈的递归合并排序

我试图以一种非常肮脏的方式实现合并排序算法,因为我们的老师告诉它这样做。

该程序从用户那里获取输入的整数数组,并在每次调用排序时打印数组的值(仅用于测试。稍后我会更正它)。它完全依赖于 stack 。我被告知首先以这种方式实现它,然后进一步改进算法。

但是,每次我得到 0 作为输出而不是输入的数字。为了测试我已经运行了 4 个数字(作为输入)的代码,如下所示

请告诉我为什么它不起作用。我已经尝试了很多。

我将非常感谢正确的答案。

0 投票
3 回答
495 浏览

c++ - 为什么在合并排序中出现向量下标超出范围错误?

有人可以帮我这段代码有什么问题吗?我收到向量下标超出范围错误。

0 投票
6 回答
431 浏览

c - 如何在具有多个处理器的机器上并行化算法?

  • 例如, Intel Core2Duo应该只有一个芯片,但有两个内核

  • 因此,应该可以控制在哪个内核上处理什么,这意味着可以指示我的算法并行使用两个内核。

问题是如何?

我是否需要在内核级别执行此操作,还是有更简单的方法?更具体地说,实现双核合并排序需要什么?

0 投票
8 回答
28231 浏览

php - 准备好的语句,`WHERE .. IN(..)` 查询和排序 - 使用 MySQL

假设我们有一个查询:

以及要获取的 ID 数组:$ids = array(1,5,18,25)

使用准备好的语句,建议准备一个语句并多次调用它:

但现在我必须手动对结果进行排序。我有什么不错的选择吗?

0 投票
6 回答
55502 浏览

java - 为什么 Java 的 Arrays.sort 方法对不同的类型使用两种不同的排序算法?

Java 6 的Arrays.sort方法对基元数组使用快速排序,对对象数组使用合并排序。我相信大多数时候快速排序比合并排序更快,并且消耗更少的内存。我的实验支持这一点,尽管两种算法都是 O(n log(n))。那么为什么不同的算法用于不同的类型呢?