Arrays 三数组元素排序算法
下面是树桩: 从三个数组A、B和C开始,总共包含Arrays 三数组元素排序算法,arrays,algorithm,sorting,Arrays,Algorithm,Sorting,下面是树桩: 从三个数组A、B和C开始,总共包含2n+1项。 编写一个算法,对所有数组中的所有条目进行排序 仅使用以下两种方法: X=sort(X)将数组X替换为已排序的版本 (X,Y)=doubleUp(X,Y)如果X有更多元素,则不会执行任何操作 而不是Y,否则它将从Y 并将它们附加到X的末尾 这是我到目前为止试过的。如果其中两个数组为空,则只需对非空数组使用sort 如果其中一个数组是空的,那么我想我可以使用doubleUp让一个数组只包含一个元素,而另一个数组包含所有其他元素,如果这个单
2n+1
项。
编写一个算法,对所有数组中的所有条目进行排序
仅使用以下两种方法:
X=sort(X)
将数组X
替换为已排序的版本(X,Y)=doubleUp(X,Y)
如果X
有更多元素,则不会执行任何操作
而不是Y
,否则它将从Y
并将它们附加到X
的末尾sort
如果其中一个数组是空的,那么我想我可以使用doubleUp
让一个数组只包含一个元素,而另一个数组包含所有其他元素,如果这个单例数组包含最小(或最大)元素,那么这就行得通。因此,每次使用doubleUp
后,我都可以使用sort
,以确保实现这一点。我用Maple编码了这个,我查过的所有案例都有效
但我不知道如何使用3个阵列。有人有什么想法吗?听起来像胡说八道。条目总数为奇数。增加数组长度的唯一方法是使其成为
doubleUp
中较小的第一个参数,在这种情况下,它的元素数为偶数。因此,除非所有元素都在一个数组中,否则无法使一个数组包含所有元素,排序或其他方式
因此,期望的最终结果不是一个按顺序包含所有元素的单个数组。或者,如果是,那么问题的答案是“它不能做”。这听起来像是一个家庭作业问题。我正在为面试问题做准备。我能问你这个面试问题是在哪里问的吗?它看起来有点奇怪,或者不完整,或者会有一个奇怪的解决方案,在其他任何地方都没有用处。我得到了curious@woliveirajr:有时问这样一个“愚蠢”的问题不是为了看你是否知道答案或是否能找到解决方案,而是为了看候选人如何处理问题、如何思考以及如何解决问题。问题陈述并不是说所有元素都必须在一个数组中。我认为让
A[max]是有效的,OP从未争论过所有元素都以1个数组结束。只有一个单例,另一个包含2n
元素。他能做到这一点我还不清楚,但听起来并不令人难以置信。@PengOne:我的意思是引用的采访问题听起来像胡说八道。如果所有条目都不在同一个数组中,那么对它们进行排序意味着什么?要么问题中有我看不到的东西,要么问题中有遗漏的东西……是的,我不确定。当一个数组为空时,我仍然对他的断言感到困惑。@PengOne:我想我遇到了一个反例:如果两个非空数组的初始大小为3和1668,那么重复应用doubleUp
(最小的一个)在278步后返回到大小为3,1668,而不经过11670步。由于大小之和是不变的,每个起始对都必须在等于该和的步骤数内重复,因此,即使没有简单的数学性质决定它,也应该很容易对最小的反例施加暴力…如果问题是这样的不连贯和无意义,这不是一个很好的编程测试,只是个谜。我的意思是,这可能是我见过的最不连贯的编程问题。无论是谁写的API应该被枪毙,我都会回答(并证明API为什么没有达到预期的效果)。