3

我最近有一个朋友要求我解决他在求职面试中看到的一个问题:

N 个元素被分成 k 个数组。找到一种算法,该算法返回 (k log N) 时间内是否有任何元素相同。

请不要提供答案,我真的很想自己解决。

我的问题是:是否有类似于正则表达式的网站来测试我的算法的复杂性?如果没有,是否有人对如何实际找到复杂性有任何建议?

我有一个大致的想法,但是自从我上次尝试做这样的问题以来已经有一段时间了。

编辑:要添加到此的新问题。K Log N 与 N log N 相比如何。显然,当 K 为 1 时,它只是 log N,这比 O(n) 更有效,但如果 K >= n 它甚至比 N log N 更差,对吗?

4

2 回答 2

2

您通常通过推理和数学证明来发现算法的复杂性。在某些数据上运行算法不会给你真正的复杂性(BigOh或者Theta)它只会给你对所提供数据的一些估计。

例如,快速排序是平均 BigOh n log n但最坏BigOh n^2的情况,如果您选择了错误的枢轴,则会发生最坏的情况。

您需要自己找出最坏的情况并进行分析。如果您在进行分析时需要帮助(或提醒),那么在美国主要大学的计算机科学类别中的 YouTube 或 iTunesU(例如 MIT 算法介绍)是一个不错的选择。

于 2012-11-13T18:18:59.587 回答
1

编辑:要添加到此的新问题。K Log N 与 N log N 相比如何。显然,当 K 为 1 时,它只是 log N,这比 O(n) 更有效,但如果 K >= n 它甚至比 N log N 更差,对吗?

要回答您的编辑,您可以在 k < n 时使用 klogn 算法,在 n < k 时使用 nlogn 算法

于 2012-11-13T19:37:44.310 回答