算法题:中位数计算

中位数(Median)

1、定义:一组数据按从小到大(或从大到小)的顺序依次排列,处在中间位置的一个数(或最中间两个数据的平均数,注意:和众数不同,中位数不一定在这组数据中)。

注:当个数为基数时,取最中间位置的数;当个数为偶数时,取最中间两个数的平均数。

2、从小到大排序,可以先用冒泡排序,然后取中位数,那么先看下冒泡排序算法,代码如下:

public static void BubbleSort(this IList<double> array)
{
    if (array == null || array.Count == 0)
    {
        return;
    }

    int count = array.Count;

    for (int i = 0; i < count - 1; i++)
    {
        for (int j = 0; j < count - i - 1; j++)
        {
            if (array[j + 1] < array[j])
            {
                double temp = array[j + 1];
                array[j + 1] = array[j];
                array[j] = temp;
            }
        }
    }
}

public static void BubbleSort<T>(this IList<T> array) where T : IComparable
{
    if (array == null || array.Count == 0)
    {
        return;
    }

    int count = array.Count;

    for (int i = 0; i < count - 1; i++)
    {
        for (int j = 0; j < count - i - 1; j++)
        {
            if (array[j + 1].CompareTo(array[j]) < 0)
            {
                T temp = array[j + 1];
                array[j + 1] = array[j];
                array[j] = temp;
            }
        }
    }
}

一种为基本的算法,另外一种为泛型的。排序后取中位数即可。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索算法
, 排序
, 动态二位数组
, array
, count
, 计算题
, 一位数组
, 排序后取最后一条
, 中位数
, 二位数组
中间
,以便于您获取更多的相关知识。

时间: 2024-09-01 20:39:41

算法题:中位数计算的相关文章

一个算法题,求答案啊啊啊啊

问题描述 一个算法题,求答案啊啊啊啊 白班 09:00-18:00 通班 09:00-21:00 每个人每个月通班数量必须等于早中班和中晚班数量之和 早中班 09:00-15:00 中晚班 15:00-21:00 假设:每月按照30计算. 排班规则: 1.每个人每个月固定休息6天连续上班天数不超过7天. 2.每天各班次上班的人数最低需求:8个白班5个通班1个早中班,2个中晚班. 3.每个月每个人的通班天数安排不超过8天. 4.每个人每个月早中班和中晚班的天数之和需要与通班天数相等. 5.每月最多

经典算法题每日演练——第七题 KMP算法

原文:经典算法题每日演练--第七题 KMP算法       在大学的时候,应该在数据结构里面都看过kmp算法吧,不知道有多少老师对该算法是一笔带过的,至少我们以前是的, 确实kmp算法还是有点饶人的,如果说红黑树是变态级的,那么kmp算法比红黑树还要变态,很抱歉,每次打kmp的时候,输 入法总是提示"看毛片"三个字,嘿嘿,就叫"看毛片算法"吧. 一:BF算法      如果让你写字符串的模式匹配,你可能会很快的写出朴素的bf算法,至少问题是解决了,我想大家很清楚的知

java算法题,公司的笔试题

问题描述 java算法题,公司的笔试题 suppose you have N cakes, N is an interger>0 // at each time, you can either eat 1 cake, or 2 cakes or 3 cakes // PROBLEM: How many ways can you eat all N cakes // for example, N = 4, (1,2,1) and (1,1,2) are considered to be diffe

记一道毫无思路的算法题

今天贤内给了我一道很实际的算法题,把我彻底难住了,实在想不出来,于是写此博文以记之. 背景是这样的,现在有一个付款明细的Excel,里面有为哪个发票,哪个公司应付多少钱的明细,明细数据是62条,现在知道我们已经付出的金额为Sum,请问到底哪些发票是已付款的. 这是62条明细数据: 653165.00 356029.11 220896.45 146362.00 1847670.00 3018518.91 1347553.07 145010.74 339784.84 199350.28 120611

c++-算法题。已知两个平行四边形各自的四个点,求这两个平行四边形是否有交集!用代码如何实现?

问题描述 算法题.已知两个平行四边形各自的四个点,求这两个平行四边形是否有交集!用代码如何实现? 算法题.已知两个平行四边形各自的四个点,求这两个平行四边形是否有交集!用代码如何实现? 解决方案 计算角度有点复杂,或许可以考虑判断点在两对平行线之间.判断点位于一对平行线之间(一条线上,一条线下):将点代入一对平行线方程,判断L1(x,y)*L2(x,y)<=0. 解决方案二: 如果两个平行四边形相交,那么一个四边形中必然有一个顶点位于令一个四边形的内部. 而判断一个点P是否在一个平行四边形ABC

设计-一道二重积分算法题,要求复杂度低于n^2

问题描述 一道二重积分算法题,要求复杂度低于n^2 对于x∈X{x0,x1,x2,...,xn-1},y∈Y{y0,y1,y2,...,yn-1},又已知一个矩阵C,C中的元素C(i,j)的值为p(xi,xj) 设计一个算法计算 假设这里log(.)属于基本算符,有没有让它的复杂度低于n^2的方法? 解决方案 每天一道算法题2 删除链表结点(时间复杂度为O(1)))

相交部分-算法题,求某点是否在平行四边形内

问题描述 算法题,求某点是否在平行四边形内 算法题,已知某点的坐标和平行四边形的四个点,求点是否在平行四边形内,用算法如何实现? 解决方案 平面上点在任意多边形内部的计算方法,就是从点所在位置做一个水平或者垂直的射线 计算它和多边形的交点,奇数在内,偶数在外 对于特殊的四边形或者需要精确知道点和多边形之间关系的,有其他的办法 对于楼主的平行四边形的特例,可以使用仿射坐标分解的办法,这个方法在三维系统当中经常被用于碰撞检测里面射线和三角形相交的检测 把点按照平行四边形的两个相邻边分解,得到仿射坐标

经典算法题每日演练——第三题 猴子吃桃

原文:经典算法题每日演练--第三题 猴子吃桃           猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾就多吃了一个.第二天早上又将剩下的桃子吃了一半,还是不过瘾又多 吃了一个.以后每天都吃前一天剩下的一半再加一个.到第10天刚好剩一个.问猴子第一天摘了多少个桃子?   分析: 这是一套非常经典的算法题,这个题目体现了算法思想中的递推思想,递归有两种形式,顺推和逆推,针对递推,只要         我们找到递推公式,问题就迎刃而解了.                令S10=1,容易看

经典算法题每日演练——第六题 协同推荐SlopeOne 算法

原文:经典算法题每日演练--第六题 协同推荐SlopeOne 算法               相信大家对如下的Category都很熟悉,很多网站都有类似如下的功能,"商品推荐","猜你喜欢",在实体店中我们有导购来为我们服务,在网络上 我们需要同样的一种替代物,如果简简单单的在数据库里面去捞,去比较,几乎是完成不了的,这时我们就需要一种协同推荐算法,来高效的推荐浏览者喜 欢的商品. 一:概念      SlopeOne的思想很简单,就是用均值化的思想来掩盖个体的打

经典算法题每日演练——第八题 AC自动机

原文:经典算法题每日演练--第八题 AC自动机        上一篇我们说了单模式匹配算法KMP,现在我们有需求了,我要检查一篇文章中是否有某些敏感词,这其实就是多模式匹配的问题. 当然你也可以用KMP算法求出,那么它的时间复杂度为O(c*(m+n)),c:为模式串的个数.m:为模式串的长度,n:为正文的长度,那 么这个复杂度就不再是线性了,我们学算法就是希望能把要解决的问题优化到极致,这不,AC自动机就派上用场了.    其实AC自动机就是Trie树的一个活用,活用点就是灌输了kmp的思想,从