题解 | #三个牛群中位数#
三个牛群中位数
https://www.nowcoder.com/practice/8bc0369faf7c4ac5ab336f38e859db05
知识点:
数组操作
分析:
这段代码是一个用于计算三个已排序整数数组的中位数的Java方法。让我们逐步解释这段代码的功能和实现。
1. 首先,代码定义了三个整型数组 `herd1`、`herd2` 和 `herd3`,分别表示三个已排序数组。
2. 然后,代码通过 `herd1.length`、`herd2.length` 和 `herd3.length` 获取了每个数组的长度,并将它们分别赋值给整型变量 `a`、`b` 和 `c`。
3. 接下来,代码创建了一个新的整型数组 `result`,该数组的长度为三个原始数组长度之和。这是为了存储将三个数组合并后的结果。
4. 接着,通过 `System.arraycopy()` 方法,代码将 `herd1`、`herd2` 和 `herd3` 数组的元素分别拷贝到新的 `result` 数组中。通过这个步骤,我们将三个数组合并成一个已排序的大数组。
5. 接下来,使用 `Arrays.sort()` 方法对 `result` 数组进行排序,以确保数组中的元素按升序排列。
6. 接着,代码获取已排序 `result` 数组的长度,并将其赋值给整型变量 `n`。
7. 接下来,代码检查数组长度 `n` 是否为偶数,通过 `n % 2 == 0` 进行判断。如果数组长度为偶数,则返回中间两个元素的平均值作为中位数。
8. 最后,如果数组长度为奇数,则返回位于数组中间位置的元素作为中位数。
总结:这段代码实现了将三个已排序整型数组合并为一个已排序数组,并计算合并后数组的中位数。如果合并后的数组长度为偶数,则返回中间两个元素的平均值作为中位数;如果长度为奇数,则返回位于数组中间位置的元素作为中位数。
编程语言:
JAVA
完整代码:
public double findMedianSortedArray (int[] herd1, int[] herd2, int[] herd3) { int a = herd1.length; int b = herd2.length; int c = herd3.length; int[] result = new int[a + b + c]; System.arraycopy(herd1, 0, result, 0, a); System.arraycopy(herd2, 0, result, a, b); System.arraycopy(herd3, 0, result, a + b, c); Arrays.sort(result); int n = result.length; if (n % 2 == 0) { return (result[n / 2] + result[n / 2 - 1]) / 2.0; } else { return result[n / 2]; } }