如何有效地合併兩個排序數組
在最近的一次採訪中,您被要求將兩個排序數組合併為一個排序數組。您提供了一個涉及比較元素並將它們附加到新數組的解決方案。雖然這種方法是正確的,但可以對其進行最佳化以獲得更好的性能。
這是一個更有效的解決方案:
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中文網其他相關文章!