我有一个已排序的数组,我想在对数时间插入一个新元素。
我想做这样的事情:
def addElem(Array[Int] data, Int x) {
val pos = java.util.Arrays.binarySearch(data,x);
data.insertAfter(pos, x);
}
我可以使用数组吗?
我应该尝试不同的数据结构吗?
答案 0 :(得分:2)
请考虑scala集合性能特征:
http://docs.scala-lang.org/overviews/collections/performance-characteristics.html
有两种类型的集合为插入操作提供Log
复杂性。它们是:TreeSet, TreeMap
(可变且不可变)。
我建议使用它们。
关于Arrays.binarySearch
用法。
它不会起作用,因为数组很可能不包含x
元素,因此返回-1
。
当然,您可以自己在binarySearch
上实施Array[Int]
以满足您的需求。