Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以在排序数组中插入数字,时间:log(n)_Java_Arrays_Sorting_Time - Fatal编程技术网

Java 是否可以在排序数组中插入数字,时间:log(n)

Java 是否可以在排序数组中插入数字,时间:log(n),java,arrays,sorting,time,Java,Arrays,Sorting,Time,我有一个已排序的整数数组(大小为n),希望在数组中插入一个新元素,可以在O(log(n))中这样做吗?我需要保留一个插入,并找到O(log(n))的计算复杂性 现在,我唯一的想法是进行二进制搜索,以找到所需的插入索引-这需要O(log(n)),但随后我必须创建一个新数组并复制整个单元格,这需要O(n) 编辑: 它是通过使用一个来解决的,这样添加的任何新元素都需要O(log(n))并找到一个元素需要O(log(n))“有可能在log(n)中这样做吗?”——简言之,没有。根据我的回忆和经验,插入数组

我有一个已排序的整数数组(大小为n),希望在数组中插入一个新元素,可以在O(log(n))中这样做吗?我需要保留一个插入,并找到O(log(n))的计算复杂性

现在,我唯一的想法是进行二进制搜索,以找到所需的插入索引-这需要O(log(n)),但随后我必须创建一个新数组并复制整个单元格,这需要O(n)

编辑:

它是通过使用一个来解决的,这样添加的任何新元素都需要O(log(n))并找到一个元素需要O(log(n))

“有可能在log(n)中这样做吗?”——简言之,没有。根据我的回忆和经验,插入数组中的任意位置几乎是O(n)。如果您想要更快的性能,请使用类似类的工具。

请提供更多详细信息。我们不是魔术师,他们能看到你在做什么,就像我们想成为魔术师一样。是的,你有最好的算法,但是移动所有元素将是O(n)。这是您能做的最好的事情。如果它是一个数组,即一个连续的内存区域,并且元素是整数排序的,那么根据定义,在数组的开头插入一个元素需要推送所有其他元素。也就是说,如果您只需要一个“数组接口”,那么其他数据结构将满足您的需要。C++的STD::向量具有LoF(n)的插入。