合併未排序數組的類型類型與下面的代碼類似嗎?合併未排序數組的集合以查找公共元素
Comparable [][] collections {colA, colB, colC};
搜索後,我找到了一種合併兩個有序數組原始數據的方法。
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)
{
if (a[i] < b[j])
{
answer[k] = a[i];
i++;
}
else
{
answer[k] = b[j];
j++;
}
k++;
}
while (i < a.length)
{
answer[k] = a[i];
i++;
k++;
}
while (j < b.length)
{
answer[k] = b[j];
j++;
k++;
}
return answer;
}
這裏,How to merge two sorted arrays into a sorted array?
假設我的K陣列(例如,A &乙...),和欲獲得列表C(允許重複的項目)。我只想一次比較每個元素。即使我在內存方面妥協,也能獲得更快的性能。
謝謝!
對我來說,似乎步驟2似乎是O(k),導致O(nK),因爲隊列中的元素沒有排序。我錯過了什麼? –
好方法,但我懷疑我們可以找到更好的。我的問題意味着每次在EQQueue中添加ekement時,我們必須找到k個未排序元素的最小值。 (請閱讀第1步而不是第2步。) –
@ A.S.H這是優先級隊列/堆。它被分類以找到O(1)中的最小值,在O(logk) – amit