Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Sorting 有人能帮我通过插入k个新元素对数组进行排序吗_Sorting_Data Structures - Fatal编程技术网

Sorting 有人能帮我通过插入k个新元素对数组进行排序吗

Sorting 有人能帮我通过插入k个新元素对数组进行排序吗,sorting,data-structures,Sorting,Data Structures,在包含N个元素的排序数组中插入K个新元素的时间复杂度(如何操作)是多少。这可以在O(K Log K+N)中完成这取决于所使用的数据结构。您提到了“在数组中”,这使得它是O(k*n)O(k+n)。对于其他实现,它可以减少到O(k logn),这是为k个元素中的每一个查找插入位置的(最佳?)复杂性 但是,数组不允许插入。在位置i上插入新元素需要将从旧i开始的所有元素向后推一个空格。如果我接近尾端,这没关系,但接近开始时,你会将几乎所有元素移回,因此最坏的情况是每次插入O(n)。最重要的是,数组的空间

在包含N个元素的排序数组中插入K个新元素的时间复杂度(如何操作)是多少。这可以在O(K Log K+N)中完成

这取决于所使用的数据结构。您提到了“在数组中”,这使得它是O(k*n)O(k+n)。对于其他实现,它可以减少到O(k logn),这是为k个元素中的每一个查找插入位置的(最佳?)复杂性

但是,数组不允许插入。在位置i上插入新元素需要将从旧i开始的所有元素向后推一个空格。如果我接近尾端,这没关系,但接近开始时,你会将几乎所有元素移回,因此最坏的情况是每次插入O(n)。最重要的是,数组的空间有限。如果您的阵列不适合n+k元素,则必须分配新内存并从旧内存复制到新内存

[编辑]


正如Sashaalm所提到的,如果一开始就知道所有k个新元素,那么可以先对新元素数组(O(k log k))进行排序,然后将它们与旧数组(O(n+k))合并,这样做会更好。假设k我有一个如下的新答案

  • 使用合并排序对K个新元素进行排序,该排序取O(K*logk)
  • 现在合并两个已排序的数组(使用第三个数组,完成后删除第一个和第二个数组)。第一个数组已经被排序,其中包含N个元素,第二个数组包含K个元素,而K个元素依次接受O(N+K),这将是O(N)

  • 总的时间复杂度是O(K*logk)(第一步)+O(N)(第二步)

  • 总时间复杂度为O(K*logk+N)


  • -“有人能帮我吗”是最糟糕的标题。这个网站真的充斥着质量低劣的问题。我不知道为什么会有这样的问题。检查好的答案。在提问之前,您是否进行了简单的搜索?@user可能重复,请重新阅读您的上一条评论。那不是英语。“我不知道为什么-我们的演员阵容在那里。检查是否有好的答案。”-我不太明白你想说什么。如果能把真正的答案归功于萨索尔姆就好了。@Gaminic会的。他在我的垃圾答案中评论了解决方案,我从那以后就一直这样回答deleted@schmop请不要相信我。我认为OP的问题根本不应该被回答,应该被否决并关闭。