【发布时间】:2016-12-26 05:48:03
【问题描述】:
在 O(nlgn) 时间内找到最接近的点对时,用于将排序列表拆分为两个排序列表的伪代码(CLRS 3rd ed pg 1043)据说在 O(n) 时间内运行。
但是,这假设第 4 行以恒定时间运行,我很难相信(如果它存储为二叉树,我假设它在 O(lgn) 时间内运行,总运行时间为 O (nlgn)。
Y 是一个排序数组,YL 和 YR 是两个新的子数组。 PL 是 Y 的随机子集,YL 是同一个子集,但是是有序的。
我的推理哪里出了问题?
【问题讨论】:
-
向PL添加Y的元素时,标记为属于PL。 (只是猜测,不知道PL是怎么形成的)。
-
如果 PL 像相当大的 hashmap/hashset 一样,预期的平均查找时间可能是 O(1),但最坏的情况是另一回事......
-
@AlexanderAnikin 实际上,我们正在处理大 O 表示法的最坏情况。
-
@n.m. PL(为了这个算法)可以被假设为随机顺序的 Y 的子集。
-
问题不在于它是什么,而在于用什么样的工艺来形成它。它是通过按某种顺序选取 Y 的元素形成的吗?
标签: arrays algorithm sorting closest-points