如何高效地合并两个排序数组
在最近的一次采访中,您被要求将两个排序数组合并为一个排序数组。您提供了一个涉及比较元素并将它们附加到新数组的解决方案。虽然这种方法是正确的,但可以对其进行优化以获得更好的性能。
这是一个更有效的解决方案:
public static int[] merge(int[] a, int[] b) { int[] answer = new int[a.length + b.length]; int i = 0, j = 0, k = 0; while (i < a.length && j < b.length) { answer[k++] = a[i] < b[j] ? a[i++] : b[j++]; } while (i < a.length) answer[k++] = a[i++]; while (j < b.length) answer[k++] = b[j++]; return answer; }
优化的解决方案使用单个循环来迭代两个数组并合并将它们放入答案数组中。通过使用三元运算符 (? :),我们可以确定较小的元素并将其附加到答案数组,而不需要额外的条件语句。
此外,我们使用 k 来增加答案数组的索引每个元素都被添加,简化了代码并减少了操作次数。
与原始解决方案相比,此优化版本更加简洁,并且执行时条件检查更少,从而提高了性能效率。
以上是如何高效地合并两个已排序的数组?的详细内容。更多信息请关注PHP中文网其他相关文章!