【发布时间】:2018-08-02 08:29:44
【问题描述】:
我有两个ArrayList,例如:
ArrayList a = new ArrayList();
a.add(10);
a.add(35);
a.add(51);
ArrayList b = new ArrayList();
b.add(24);
b.add(46);
b.add(81);
我需要创建一个函数,将 B 到 A 的元素放入排序查询中。 (在我看来,它必须检查 A 和 B 中相同位置的元素,并将 24 放在 10 和 35 之间,将 46 放在 35 和 51 之间,最后一个是 81)。 我有:
public static void merge(ArrayList a, ArrayList b)
{
a.addAll(b);
Collections.sort(a);
}
但它不是一个有效的算法(N^2)。 有没有更高效的?
【问题讨论】:
-
列表是否已排序?
-
怎么说是O(n^2)?
-
我会使用 LinkedLists 按索引更好地对您的值进行排序
-
另外,不要使用原始类型..为类型提供类型参数
-
作为一个新手,你如何关心排序算法的有效性? :-) 只要您的数组不包含数千个元素,无论如何排序都会立即进行。