想知道如果数组的长度是偶数,我该怎么办

时间:2013-05-12 22:37:43

标签: java arrays sorting

我编写了一个代码,用于从排序数组中查找中间元素。以下是我的代码的一部分:

Java Code:
int[] a = {1,2,3,4,5};
int x = a.length;
        if (x % 2 != 0){
            int mid = 0 + x/2;
            System.out.println("The Middle Element is : " + a[mid]);
        }

我正确地获得输出但是想知道我应该在上面代码的else条件下写什么?换句话说,如果a.length是偶数,我该怎么做才能找到一个中间元素?这可能吗?

5 个答案:

答案 0 :(得分:6)

我们无法为您解答。这取决于您的要求。以下是一些选项:

  • 归还两个中间的。
  • 返回中间的早期选项。
  • 抛出异常,即无法在均匀长度上调用该方法。

答案 1 :(得分:3)

对此没有正确答案 - 偶数个值的中间不存在于单数意义上 - 中间位于2个中间值之间。答案取决于你想要达到的目标 - 我们不能告诉你采取较低,较高或两个中间值,因为我们不知道你想用它们做什么。从广义上讲,你有5种选择,但只有你可以做出选择,除非你给我们更多关于你想要做什么的背景:

  • 返回较低的中间值。
  • 返回较高的中间值。
  • 返回上述两个值。
  • 抛出异常。
  • 什么都不做(这是你的代码现在所做的)。

答案 2 :(得分:1)

另一方面,你必须将总分为2(如果你想要整个下等(2个为5个元素)或+1则有超级优势(3个为5个元素)

你可以直接做:

int[] a = {1,2,3,4,5};

int x = a.length;
int mid = (int) x/2;
System.out.println("The Middle Element is : " + a[mid]);

当你没有中间

时,这里有中间或下层元素

如果您没有中间元素,也可以在顶级元素中知道异常,并在必要时捕获它。

答案 3 :(得分:0)

两者的代码都是少量的,用于产生(两个)中间元素的平均值:

int[] a = {1,2,3,4,5, ...};

int x = a.length;
int mid = x / 2;
int mid2 = (x + 1) / 2; // Possibly the same as mid
int middleValue = (a[mid] + a[mid2]) / 2;
System.out.println("The Middle Element is : " + middleValue);

答案 4 :(得分:0)

从数学上讲,找到偶数组的中位数的典型常见解决方案是计算两个最中间数的平均值。 (这里有一个简单的解释:http://www.wikihow.com/Find-the-Median-of-a-Set-of-Numbers

但正如大家所说,没有正确的答案。 就个人而言,我会选择平均选项,但请确保更改输出语句,以使用户完全清楚这是一个平均值,而不是实际数字。