千里马和;数组的最小值

时间:2013-03-14 15:32:13

标签: c arrays

给出n个数字的数组,其中n是偶数。需要确定这n个数的最大值和最小值。我需要知道所需的比较吗?

3 个答案:

答案 0 :(得分:4)

可以使用3*n/2-2比较来完成。

对于n == 2,只需比较两个数字即可。 现在假设我们有第一个n-2数字的最小值和最大值。比较剩下的两个数字,然后将较大的数字与之前的最大值进行比较,将较小的数字与之前的最小值进行比较。

答案 1 :(得分:3)

可以在O(n)时间内完成。

您可以查看此link以供参考

答案 2 :(得分:1)

对于未排序的数组,可以在大约1.5n次比较中完成。您可以通过比较数组的元素对并存储min和本地max来实现。您已完成n/2次比较以查找(本地人)max和n/2以查找最小值。因此,此阶段共有n

现在你浏览最大和最小的当地人并找到全局最大值和最小值。这也需要n/2次比较。因此n + n / 2 = 1.5n

如果数组已排序,您可以在没有任何比较的情况下找到它,因为最低数字位于第0位,最高位于第N - 1位。