找到平均比较数

时间:2018-03-25 02:27:22

标签: c++ algorithm

我想写一个算法来查找最小和最大100000个数组100000,大小为1000,包含从1到1000的随机数。该算法假设返回平均比较次数。

假设我使用O(n)复杂度的天真解决方案,平均比较数假设是多少? 1999年或2000年(最小和最大)?

我也想问一下如何在cpp中创建一个随机数组。

3 个答案:

答案 0 :(得分:2)

你必须比较每个元素两次(一次到当前最小值,一次到当前最大值)。

这不是“天真”,它是找到未分类数字的最小值和最大值的最佳方式。

答案 1 :(得分:0)

天真与简单/最佳之间存在很大差异,寻找其他解决方案总是好的,但并不总是能找到更好或更优的解决方案。

至于你的问题,你必须将它们作为一分钟和一次作为最大值进行两次比较

答案 2 :(得分:0)

嗯,我不同意Sid的答案,因为用max和min检查每个元素是最佳的。

首先,您可以先取两个元素并将它们进行比较,然后将其中一个设置为min,将另一个设置为最大值。

然后你可以轻松地循环获取2个元素,将它们一起比较并检查较低的一个与最小值和较大的一个最大值。

因此,对于2个元素,您只有3个比较。

最好用最小值和最大值检查每个数字,因为你对2个元素进行了4次比较。