中位数是一组数据的中间值。要确定数字序列的中位数,必须首先按升序排列数字。
- 如果存在奇数个数字,则中位数是中间的数字,上下具有相同数量的数字。
- 如果列表中的数字数量为偶数,则中位数为两个中间值的平均值。
关于中位数的事实:
- 中位数通过均值和众数模式进行组合,以创建称为集中趋势测度的分组。
- 中位数是失真数据的一项重要指标(与均值相比),因为中位数不那么容易失真。例如,{1、2、2、5、100)的中位数为2,平均值为22。
- 如果用户为每个值添加一个常数,则平均值和中位数会增加相同的常数。
- 如果用户将每个值乘以常数,则均值和中位数也将乘以该常数。
未分组数据中位数的公式:
分组数据中位数的公式:
如何找到未排序数组的中位数?
天真的解决方案:
给定n个大小的未排序数组,请找到其中位数。
Median of a sorted array of size n is defined as below :
It is middle element when n is odd and average of middle two elements when n is even. Since the array is not sorted here, we sort the array first, then apply above formula.
例子:
Input : {1, 3, 4, 2, 6, 5, 8, 7}
Output : Median = 4.5
Since number of elements are even, median
is average of 4th and 5th largest elements.
which means (4 + 5)/2 = 4.5
Input : {4, 4, 4, 4, 4}
Output : Median = 4
下面是代码实现:
C++
// CPP program to find median
#include
using namespace std;
// Function for calculating median
double findMedian(int a[], int n)
{
// First we sort the array
sort(a, a + n);
// check for even case
if (n % 2 != 0)
return (double)a[n / 2];
return (double)(a[(n - 1) / 2] + a[n / 2]) / 2.0;
}
// Driver program
int main()
{
int a[] = { 1, 3, 4, 2, 7, 5, 8, 6 };
int n = sizeof(a) / sizeof(a[0]);
cout << "Median = " << findMedian(a, n) << endl;
return 0;
}
Java
// Java program to find median
import java.util.*;
class GFG {
// Function for calculating median
public static double findMedian(int a[], int n)
{
// First we sort the array
Arrays.sort(a);
// check for even case
if (n % 2 != 0)
return (double)a[n / 2];
return (double)(a[(n - 1) / 2] + a[n / 2]) / 2.0;
}
// Driver program
public static void main(String args[])
{
int a[] = { 1, 3, 4, 2, 7, 5, 8, 6 };
int n = a.length;
System.out.println("Median = " + findMedian(a, n));
}
}
Python3
# Python3 program to find median
# Function for calculating median
def findMedian(a, n):
# First we sort the array
sorted(a)
# check for even case
if n % 2 != 0:
return float(a[n // 2])
return float((a[int((n-1)/2)] +
a[int(n / 2)])/2.0)
# Driver program
a = [ 1, 3, 4, 2, 7, 5, 8, 6 ]
n = len(a)
print("Median =", findMedian(a, n))
C#
// C# program to find median
using System;
class GFG {
// Function for
// calculating median
public static double findMedian(int[] a, int n)
{
// First we sort
// the array
Array.Sort(a);
// check for
// even case
if (n % 2 != 0)
return (double)a[n / 2];
return (double)(a[(n - 1) / 2] + a[n / 2]) / 2.0;
}
// Driver Code
public static void Main()
{
int[] a = { 1, 3, 4, 2,
7, 5, 8, 6 };
int n = a.Length;
Console.Write("Median = " + findMedian(a, n) + "\n");
}
}
PHP
输出:
Median = 4.5
找到中位数= O(n Log n)的时间复杂度,因为我们需要首先对数组进行排序。请注意,我们可以使用此处和此处讨论的方法找到O(n)时间中的中值。
与中位数有关的基本程序:
- 最大化数组的中位数
- 使数组元素相等的最小增量/减量
- 与数组中元素的最小差异总和
- 两个大小不同的排序数组的中位数|套装1(线性)
- O(log(min(n(n,m)))中具有不同大小的两个排序数组的中位数
与中位数有关的更多问题:
- 使用计数排序的中位数和众数
- 要添加的最小元素数,以使中位数等于x
- 将中值字符串解码为原始字符串
- K个附加整数后的中位数
- 在按行排序的矩阵中找到中位数
- 在O(n)时间和O(1)空间中找到BST的中值
- 中位数为整数流(运行整数)
关于中位数的最新文章!