【问题标题】:Wondering what should I do if the length of an array is even [closed]想知道如果数组的长度是偶数我该怎么办[关闭]
【发布时间】:2013-05-12 22:37:42
【问题描述】:

我编写了一个代码来从排序数组中查找中间元素。这是我的代码的一部分:

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 是偶数,我应该怎么做才能找到中间元素?这可能吗?

【问题讨论】:

  • 我见过人们返回两个或一个中间元素,当长度是偶数时......取决于问题,因为在这种情况下没有特定的中间元素。
  • @Bill 你的意思是说如果我有int[] a = {1,2,3,4},应该返回2 and 3
  • 是的,我见过有人这样做...这取决于您遇到的问题。
  • @AaK,“你应该做什么”取决于你需要什么算法来找到中间元素。如果只是出于个人好奇,任何答案都可以。
  • 视情况而定。 middle element 在您的域中的定义是什么。一个元素之前和之后具有相同数量的元素?如果是这样,就没有这样的middle element。中间元素是 size/2 中的元素,然后是那里的任何元素。

标签: java arrays sorting


【解决方案1】:

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

  • 返回中间的两个。
  • 返回中间的较早选项。
  • 抛出无法在偶数长度上调用该方法的异常。

【讨论】:

  • 还有一个是返回两个中间的平均值
  • @Patashu 当然。没有正确的事情。
  • @tieTYT 相反,有很多正确的事情。但没有 Right Thing™。
【解决方案2】:

对此没有正确答案 - 偶数个值的中间值在单一意义上不存在 - 中间值介于 2 个中间值之间。答案取决于您想要达到的目标——我们不能告诉您取较低、较高或两者的中间值,因为我们不知道您想用它们做什么。一般来说,您有 5 个选项,但只有您可以做出选择,除非您在此处向我们提供更多关于您要做什么的背景信息:

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

【讨论】:

    【解决方案3】:

    对于另一种方式,您必须将总数除以 2(如果您希望整个下级(5 个元素为 2)或 +1 具有上级(5 个元素为 3)

    你可以直接做:

    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]);
    

    这里是当你没有中间时有中间或劣等元素

    如果您没有中间元素,您也可以在顶级元素中进行异常处理,并在需要时捕获它。

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        两者都有 if-less 代码,用于产生(两个)中间元素的平均值:

        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);
        

        【讨论】:

          猜你喜欢
          • 2018-05-08
          • 2021-06-21
          • 2022-07-25
          • 2012-05-20
          • 2018-08-08
          • 2014-02-28
          • 2022-01-05
          • 2017-05-10
          • 1970-01-01
          相关资源
          最近更新 更多