早教吧作业答案频道 -->数学-->
已知两个长度分别为m和n的升序链表若将它们合并为一个长度为m+n的降序链表,则最坏情况下的时间复杂度是A.O(n)B.O(mn)C.O(min(m,n))D.O(max(m,n))
题目详情
已知两个长度分别为m 和n 的升序链表
若将它们合并为一个长度为m+n 的降序链表,则
最坏情况下的时间复杂度是
A.O(n) B.O(mn) C.O(min(m,n)) D.O(max(m,n))
若将它们合并为一个长度为m+n 的降序链表,则
最坏情况下的时间复杂度是
A.O(n) B.O(mn) C.O(min(m,n)) D.O(max(m,n))
▼优质解答
答案和解析
wandersss 网友说的不对,即使改成“非降序链表”,准确答案是O(m+n)而不是O(max(m,n)),比如链表1为100~999(900个数,m=900),链表2为1~99、1000(100个数,n=100),整个比较次数为99+900=999次.
下面我说说我对这道题的理首先这道题的准确答案是O(m+n),可是选项中没有,所以只能选一个最符合准确答案的选项,即使它不一定是正确的.
假设m大于n,
如果m非常接近于n,则O(m*n)~=O(n^2)>>O(m+n)~=O(2n),所以B不正确
如果m>>n,则O(m+n)>>O(n),O(m+n)>>O(min(m,n)) =O(n),所以A、C不正确
只有D,如果m非常接近于n,则O(m+n)~=O(2n)约等于O(n);如果m>>n,O(m+n)也约等于O(max(m,n))=O(m)
这道有序链表合并的问题,如果是按照原序排列,则最好的情况是O(min(m,n)) ,最坏的情况是O(m+n);如果是按照原序的逆序排列,则无论最好最坏都是O(m+n)
一开始说了最坏情况,下面说一下最好情况.比如链表1为100~999(900个数,m=900),链表2为0~99(100个数,n=100),整个比较次数为100次.在比较完成之后直接把链表1剩余所有链表直接挂在新链表(也可以直接是链表2)的后面.
下面我说说我对这道题的理首先这道题的准确答案是O(m+n),可是选项中没有,所以只能选一个最符合准确答案的选项,即使它不一定是正确的.
假设m大于n,
如果m非常接近于n,则O(m*n)~=O(n^2)>>O(m+n)~=O(2n),所以B不正确
如果m>>n,则O(m+n)>>O(n),O(m+n)>>O(min(m,n)) =O(n),所以A、C不正确
只有D,如果m非常接近于n,则O(m+n)~=O(2n)约等于O(n);如果m>>n,O(m+n)也约等于O(max(m,n))=O(m)
这道有序链表合并的问题,如果是按照原序排列,则最好的情况是O(min(m,n)) ,最坏的情况是O(m+n);如果是按照原序的逆序排列,则无论最好最坏都是O(m+n)
一开始说了最坏情况,下面说一下最好情况.比如链表1为100~999(900个数,m=900),链表2为0~99(100个数,n=100),整个比较次数为100次.在比较完成之后直接把链表1剩余所有链表直接挂在新链表(也可以直接是链表2)的后面.
看了已知两个长度分别为m和n的升序...的网友还看了以下:
应用题,很难算的,某商场出售A冰箱每台2190元,每天耗1度电,B冰箱售价比A冰箱高10%,耗电为0 2020-03-30 …
1、A、B、C三种不同的液体,它们的质量分别为m1、m2、m3,它们的比热容分别为c1、c2、c3, 2020-03-31 …
水浒中的水沸腾后,仍放在火上加热,这时壶中水的温度将A.不变B.升高C.降低C.时高时低马上是水壶 2020-04-26 …
.在敞开的锅中烧水,水沸腾后用火继续加热,这时水的温度将A.升高B.不变C.降低D.忽高忽低 2020-05-13 …
设想一间与外界绝热(即无热交换)的房间里,有一台正在工作的电冰箱,如果电冰箱的门是敞开的,那么室内 2020-06-26 …
A、B、C三种不同的液体,它们的质量分别为M1、M2、M3,它们的比热容分别为C1、C2、C3,它们 2020-10-31 …
如图所示,水槽中装有水,装有铁块的烧杯漂浮在水面上,将杯中铁块取出并投入水中后,水面的高度将A上升B 2020-11-08 …
在青藏高原,用普通锅把水烧沸腾时,水的温度将A.高于100度B.低于100度C.等于100度D.以上 2020-12-05 …
真空中所有的电磁波都具有相同的()A频率B波长C波速D能量当电磁波的频率减小时,它在真空中的速度将( 2020-12-09 …
物体A、B质量相等,把他们加热到相同的温度,先把A投放到一容器内的水中,最终能使水温升高10摄氏度, 2020-12-31 …