Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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实现中已排序和未排序链表的合并_Java - Fatal编程技术网

java实现中已排序和未排序链表的合并

java实现中已排序和未排序链表的合并,java,Java,我在读排序链表和未排序链表。。。我找到了这张桌子 我不明白他们在第三个表中所说的排序链表合并了O(m+n)而未排序链表合并了O(1)是什么意思 这是什么意思 谢谢,这是说合并排序列表的最佳时间是O(m+n),因为您必须遍历两个列表,比较顶部/底部,并决定哪个更高/更低。未排序的列表理论上可以合并到O(1)中,如果这是一个链表。。。您只需将第一个链表的尾部指向第二个链表合并列表就是将两个(或多个)列表合并为一个列表。对于排序的列表,合并是O(m+n)的原因是,在合并排序的列表时,需要将元素放置到正

我在读排序链表和未排序链表。。。我找到了这张桌子

我不明白他们在第三个表中所说的排序链表合并了
O(m+n)
而未排序链表合并了
O(1)
是什么意思

这是什么意思


谢谢,这是说合并排序列表的最佳时间是O(m+n),因为您必须遍历两个列表,比较顶部/底部,并决定哪个更高/更低。未排序的列表理论上可以合并到O(1)中,如果这是一个链表。。。您只需将第一个链表的尾部指向第二个链表

合并列表就是将两个(或多个)列表合并为一个列表。对于排序的列表,合并是
O(m+n)
的原因是,在合并排序的列表时,需要将元素放置到正确的位置。在未排序的列表中,您并不真正关心它在列表中的位置,因此您可以将一个列表中的每个元素添加到第二个列表的开头(或任意位置)。这可能会消除您的一些疑问,谢谢。。这是有帮助的,上帝保佑你:)是的,尽管我不确定OP是否一定会自己意识到隐含的假设,即结果列表预期与原始列表相同(排序与否)。确保结果的可排序性需要对已排序的输入进行更多的工作。@AllaSlda,您只需要遍历每个列表一次(遍历同时进行)。这种合并用于合并排序;您可能会在该算法的解释中找到更详细的解释。因此,如果它遍历每个列表不止一次,那么它将是O(m*n)!!我认为正确吗。。。感谢you@AllaSldaO(m*n)意味着对于每个m元素,您将遍历其他列表中的所有n个元素。您的语句“…多次遍历每个列表…”是ambiguous@AllaSlda不一定。对big-O符号的完整解释不适合这个网站,更不用说评论了。与您的讲师交谈或寻找教学资源。