JavaScript 中数组的中位数计算
在这个问题陈述中,我们的任务是借助 Javascript 功能来计算数组的中位数。有多种方法可以用来解决此任务。一种计算中位数的简单方法是使用 Javascript 的内置函数。
理解问题陈述
问题陈述是在 Javascript 中编写一个函数,该函数将帮助计算给定数组的中位数。例如,如果我们有一个整数数组 [1, 2, 3, 4, 5],那么这个数组的中位数是 3。因为 3 是数组的中间元素。
给定问题的逻辑
对于代码,我们将创建一个函数来查找数组的中位数。在函数内部,我们将通过将数组的长度除以 2 来计算数组的中间索引。如果数组具有奇数个元素,则此索引将是数组中中位数的索引。如果数组具有偶数个数组,则中位数的索引将位于中位数的左侧。
然后,我们将使用 sort() 方法按升序对数组进行排序,该方法将采用比较函数作为参数。如果数组的长度为偶数,则我们将返回两个中间值的平均值。我们将通过将中间索引和中间左侧索引处的数值相加,然后将和除以 2 来做到这一点。如果数组的长度为奇数,则我们将简单地返回中间值。
Learn JavaScript in-depth with real-world projects through our JavaScript certification course. Enroll and become a certified expert to boost your career.
算法
步骤 1 - 声明一个名为 median 的函数,该函数使用数组参数。
步骤 2 - 通过将数组的长度除以 2 来计算数组的中点。它将显示中间元素的索引。
步骤 3 - 使用 sort 方法对给定数组进行排序。
步骤 4 - 如果数组长度为偶数,则返回左侧中间值。
步骤 5 - 将结果作为数组的中间元素返回。
算法代码
//function to find the median of the given array function median(arr) { const mid = Math.floor(arr.length / 2); const sortedArr = arr.sort((a, b) => a - b); if (arr.length % 2 === 0) { return (sortedArr[mid - 1] + sortedArr[mid]) / 2; } else { return sortedArr[mid]; } } const arr = [11, 12, 13, 14, 15, 16, 17, 18, 19]; console.log(median(arr));
复杂度
函数花费的时间为 O(n log n),因为我们使用了 sort 方法,该方法执行快速排序,而快速排序需要 O(n log n) 的时间来对元素进行排序。其中 n 是给定数组的大小。代码使用的空间为 O(1),因为它仅将结果存储为数组的中间元素。
结论
实现的代码为找出给定数组的中位数提供了一个简单而有效的解决方案。创建的函数花费的时间为 O(n log n)。可能存在给定数组已排序的情况,在这种情况下,时间复杂度将为 O(n),因为它需要线性时间。