【发布时间】:2012-11-03 00:29:45
【问题描述】:
我对这些东西很陌生,我需要你的帮助。
我应该构建一个高效的简单算法,它返回一个大小为 n 的数组中的最大值,该数组包含重复的数字 1,2,...n。
然后我要确定最佳运行时间、平均运行时间和最差运行时间。
所以我有两个问题:
首先,我试图理解为这个简单的算法需要一个有效解决方案的想法是什么。据我了解,我应该只有一个从 1 到 n 的简单循环并寻找最大值。 “高效”算法是否指出如果我在数组中找到值 n,我可以停止搜索更多值,因为这是数组中的最大值?
如何确定最佳运行时间和平均运行时间,同时计算平均运行时间,这是一个均匀分布。 也就是说,数组中的每个单元格都有 1/n 的机会成为最大值。
提前非常感谢!
【问题讨论】:
-
听起来像是功课……到目前为止,你有什么想法?提示:排序数组的最大/最小值的运行时间为 O(1)。
-
@MarcB:但是确定数组是否排序是 O(n) :|
-
所以只是在任意数组上提取最大值/最小值。
-
@MarcB 数组未排序。我不需要解决方案,而是需要对具体答案的一些解释。至于我到目前为止提出的问题,我在我的问题中写道。
-
“一个数组中的最大值,大小为n,其中包含数字1,2,...n,重复”显然是n,不是吗?
标签: algorithm complexity-theory