【发布时间】:2015-01-28 02:55:40
【问题描述】:
你好,
我有两个关于复杂性的问题:
1) 所谓的二分搜索的最佳/最差复杂度是多少 多次。换句话说,用于比较两个 数组。我相信其中之一是 O(mlog(n)) (之间不匹配 数组)。但是,由于我无法弄清楚另一个,我无法确定是否 这是最好的或最坏的。
2) 对于以下代码段:两个大小为 m 的数组 A 和 B 大小 n,其中 m>=n,并且 A 和 B 已通过冒泡排序 每个。此外,没有重复 A 中的元素。 B 中没有元素 被重复。但是,A 和 B 可能有共同的元素。这 以下伪代码计算公共元素的数量:
count = 0 for i from 0 to m: if i < n: for j from 0 to n: if A[i]==B[j]: count + =1 break else: break我似乎想出了以下排序和比较的复杂性:
冒泡排序有最差的 O(n^2) 和最好的 O(n)
搜索有两个界限(我认为):情况 1:没有匹配 O(mn), 情况 2:数组 A(size m) 的前 n 个元素匹配所有 数组 B(大小 n)的元素。 -> O(n^2)
复杂度可能性(排序和搜索):O(n^2+mn),O(n+mn),O(n^2+n)=O(n^2) 最好的 似乎已排序,没有匹配 O(mn+n) 最糟糕的似乎不是 排序后没有匹配项 O(n^2+mn) 这看起来有效吗?
谢谢。
附:对不起,整个事情都是块格式的。它不会让我不这样做就提交。
【问题讨论】:
标签: algorithm sorting search big-o