【问题标题】:Algorithm for max integer in an array of integers整数数组中最大整数的算法
【发布时间】:2010-04-22 11:42:52
【问题描述】:

如果我们需要实现一个函数,它接受一个整数数组并返回集合中的最大整数,假设数组的长度小于 1000。你会使用冒泡排序还是归并排序,为什么?

另外,如果数组长度大于 1000,上面的算法选择会发生什么?我对为什么我应该使用一种特定的算法而不是另一种算法感到有点困惑。仅仅是因为它的复杂性和时间还是其他因素也参与其中?如果我必须测试上述函数,而对于简单算法需要更多时间,而对于复杂算法需要更少时间怎么办?

【问题讨论】:

  • 这听起来很像家庭作业。如果是这样的话,你能把它标记出来吗?
  • 如果数组长度大于1000,那么气泡就会消失。
  • 这不应该仅仅因为它闻起来像作业。

标签: algorithm mergesort bubble-sort


【解决方案1】:

我根本不会排序。我只是遍历数组并跟踪最大的一个。这需要 O(N) 时间,而排序算法通常不会比 O(N*log(N)) 做得更好。

【讨论】:

  • +1:OP 的排序意图对此很奇怪。我想知道是否还有其他基本要求。
  • 如果你选择了一个糟糕的算法,排序也会变得比 O(N * logN) 更糟
【解决方案2】:

这个网站很震撼

http://www.sorting-algorithms.com/

【讨论】:

  • +1,虽然与问题没有直接关系:P 但很好的网站。
【解决方案3】:

如果您必须排序,请使用归并排序,因为它比冒泡排序快得多。对于 1000 个元素和单一排序,您可能不会注意到现代计算机上的差异,但对于更多元素(我认为 >= 10 000),差异变得很明显。

【讨论】:

    【解决方案4】:

    让我们调用数组 N 的长度。

    使用冒泡排序对数组进行排序大约需要 N*N 个时间单位。

    使用合并排序对其进行排序需要 N * log N 个时间单位。

    只需一个接一个地查看每个元素并跟踪哪个元素最大将花费 N 个时间单位的顺序。

    因此,使用最后一种方法。

    【讨论】:

      猜你喜欢
      • 2012-09-04
      • 1970-01-01
      • 1970-01-01
      • 2015-03-20
      • 2015-07-04
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      • 2015-10-30
      相关资源
      最近更新 更多