我有一个分配问题,我需要在不使用'sort'命令的情况下解决。我很感激任何建议。
问题:假设你有两个int数组,arr1和arr2,每个都包含按升序排序的整数。
编写一个名为merge的静态方法,它接收这两个数组的参数,并返回对新的,有序的int数组的引用,这是合并arr和arr2的整数的结果。
答案 0 :(得分:7)
答案 1 :(得分:3)
伪代码:
1: Set two pointers to beginning of the two arrays.
2: Compare the values from the two arrays at the pointers.
3: Add the smaller value to a new array and move its pointer to the next value in the array.
4: Repeat till both pointers cross the ends of the two arrays.
答案 2 :(得分:1)
简单,这是合并排序算法的最后一步。制作2个整数变量来跟踪每个不同输入数组的索引。
然后循环遍历输入数组中的2个第一个元素中添加最小值(或最大值,具体取决于排序顺序)的元素。这种方式在每次迭代时,最小的可能值被添加到返回数组中。只需确保检查您的第一个输入数组索引是否仍然小于第一个输入数组长度,如果不是,那么您知道要添加的其余元素位于第二个输入数组中。增加从中获取元素的数组的索引,然后增加整个值数组的索引。
答案 3 :(得分:1)
如果你需要额外的分数或者你感到无聊:相对较新的Timsort algorithm使用稍微改进的合并函数来处理数据聚集的情况(这是相对常见的)。这在http://svn.python.org/projects/python/trunk/Objects/listsort.txt中记录 - 搜索“疾驰模式”。奔腾模式也用于timsort的Java实现。