Scala将元素插入到log(N)中的排序数组中

时间:2015-12-23 12:32:23

标签: scala

我有一个已排序的数组,我想在对数时间插入一个新元素。

我想做这样的事情:

def addElem(Array[Int] data, Int x) {
            val pos = java.util.Arrays.binarySearch(data,x);
            data.insertAfter(pos, x);
}

我可以使用数组吗?

我应该尝试不同的数据结构吗?

1 个答案:

答案 0 :(得分:2)

请考虑scala集合性能特征:

http://docs.scala-lang.org/overviews/collections/performance-characteristics.html

有两种类型的集合为插入操作提供Log复杂性。它们是:TreeSet, TreeMap(可变且不可变)。

我建议使用它们。

关于Arrays.binarySearch用法。 它不会起作用,因为数组很可能不包含x元素,因此返回-1。 当然,您可以自己在binarySearch上实施Array[Int]以满足您的需求。