精华内容
下载资源
问答
  • java 计算中位数方法

    万次阅读 2019-01-04 15:51:14
    最近工作需要 要求把python的代码写成java版本,python中有一个np.median()求...如果一个集合是偶数个,那么中位数就是按大小排列后,最中间那2个数的平均数。 比如: 1,2,3,4,5 那中位数就是3 1,2,3,4...

    最近工作需要 要求把python的代码写成java版本,python中有一个np.median()求中位数的方法,java决定手写一个

    先说说什么是中位数:

    中位数就是中间的那个数,

    如果一个集合是奇数个,那么中位数就是按大小排列后,最中间那个数,

    如果一个集合是偶数个,那么中位数就是按大小排列后,最中间那2个数的平均数。

    比如:

    1,2,3,4,5  那中位数就是3

    1,2,3,4,5,6 那中位数就是 (3+4)/2 = 3.5

    知道逻辑后方法就很简单了 下面是代码

    public static void main(String[] args) {
    	List<Integer> total = new ArrayList<Integer>();
    	total.add(4);
    	total.add(2);
    	total.add(3);
    	total.add(1);
    	total.add(5);
    	total.add(6);
    	double a = median(total);
    	System.out.println(a);
    }
    private static double median(List<Integer> total) {
    	double j = 0;
    	//集合排序
        Collections.sort(total);
        int size = total.size();
        if(size % 2 == 1){
        	j = total.get((size-1)/2);
        }else {
        	//加0.0是为了把int转成double类型,否则除以2会算错
        	j = (total.get(size/2-1) + total.get(size/2) + 0.0)/2;
        }
    	return j;
    }

    1. 方法内先判断集合是奇数还是偶数,如果是奇数那么就是第n+1/2个数 ,也就是下标为n-1/2的值,

    如果是偶数 就是第n/2和n/2+1的数的平均值 也就是下标为n/2-1和n/2的平均值

    2. 该方法传入的是list集合  如果为数组  可以先用Arrays.aslist()方法转换后传入

    展开全文
  • SQL 如何计算每个分组的中位数

    千次阅读 2020-06-15 14:31:49
    中位数是指一数据排序以后,位于中间位置的数据值。如果数据个数是奇数,中位数就是最中间位置那个值;如果是偶数,则是中间位置那两个数的平均值。 怎么查询出数据分组以后每个中位数呢? 用SQL来解决这个...

    中位数是指一组数据排序以后,位于中间位置的数据值。如果数据个数是奇数,中位数就是最中间位置那个值;如果是偶数,则是中间位置那两个数的平均值。

    怎么查询出数据分组以后每个组的中位数呢?

    用SQL来解决这个问题是很有难度的!

    SQL的集合是无序的,没有数据位置的概念,需要人为地造出行号,但是要对各分组独立编行号也困难。后来在SQL2003标准中加入了窗口函数,可以对分组编行号了,但是求各组中位数依然繁琐。

    举个例子:现有成绩表SCORES数据如下,要求查出每科成绩的中位数。

    COURSESCORE
    History68.5
    History79.0
    History82.5
    History88.0
    History93.5
    Maths75.5
    Maths83.0
    Maths85.0
    Maths95.5

    查询出来的各科成绩中位数应该是:

    COURSESCORE
    History82.5
    Maths84.0

     

    以Oracle为例,用SQL写出来是这样:

    WITH  A  AS 

           ( SELECT COURSE, SCORE,

                  ROW_NUMBER()OVER ( PARTITION BY COURSE ORDER BY SCORE) AS RN,

                  COUNT(*) OVER (PARTITION BY COURSE) AS CNT

           FROM SCORES ),

    B  AS

           (SELECT * FROM A WHERE RN>(CNT-0.5)/2 AND RN<(CNT+2.5)/2 )

    SELECT COURSE, AVG(SCORE) AS SCORE FROM B

    GROUP BY COURSE

    ORDER BY COURSE;

    这里的A为每组数据加上组内行号并统计每组记录数,B查出位于每组中间位置的记录,最后从B里算出每组平均值,即为中位数。解题步骤比较多,这种SQL不好写。另外还有不用窗口函数的办法,语句就更加复杂了,这里不再列出。

     

    集算器的SPL语言支持组内运算,也提供了中位数函数,解决这个问题就会简单很多,只需1行代码:

    connect("mydb").query("select * from scores order by course, score").group(COURSE).new(~.COURSE,~.(SCORE).median():SCORE)

     

    SPL 擅长解决这类分组子集和组内有序计算,请阅计算各组前 N 行组内运算行间计算

    集算器 SPL 是解决 SQL 难题的专业脚本语言,它语法简单,符合自然思维,是天然分步、层次清晰的面向过程计算语言。它采用与数据库无关的统一语法,编写的算法可在数据库间无缝迁移。它是桌面级计算工具,即装即用,配置简单,调试功能完善,可设置断点、单步执行,每步执行结果都可查看。请参阅SQL 解题手

    SPL也能很方便地嵌入到JAVA应用,可参考Java 如何调用 SPL 脚本

    具体使用方法可参考 如何使用集算器

    展开全文
  • 给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。 示例 1: 输入:nums = [12,345,2,6,7896] 输出:2 解释: 12 是 2 数字(位数为偶数) 345 是 3 数字(位数为奇数) 2 是 1 数字(位数为...

    给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。
    示例 1:
    输入:nums = [12,345,2,6,7896]
    输出:2
    解释:
    12 是 2 位数字(位数为偶数)
    345 是 3 位数字(位数为奇数)
    2 是 1 位数字(位数为奇数)
    6 是 1 位数字 位数为奇数)
    7896 是 4 位数字(位数为偶数)
    因此只有 12 和 7896 是位数为偶数的数字

    # 解法1 值除以10逐步累加求出数字有多少位
    def find_number_method1(num):
        result = 0
        for i in num:
            count = 1
            while i>=10:
                i = i/10
                count+=1
            if count%2 ==0:
                result+=1
        return result
    # 解法2 将数字转化为字符串 求字符串长度
    def find_number_method2(nums):
        result = 0
        for num in nums:
            if not len(str(num)) % 2:
                result += 1
        return result
    # 解法3 通过 以10为底的对数也可以求数字的长度。
    
    展开全文
  • 程序设计-求N个数的中位数(C++)

    万次阅读 2019-02-28 10:19:02
    分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!... /* * 求n个数的中位数 - C++ - by Chimomo ... * 计算有限个数的数据的中位数的方法是:把所有的同类...

    分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net

    /*
     * 求n个数的中位数 - C++ - by Chimomo
     *
     * 对于一组有有限个数的数据来说,它们的中位数是这样的一种数:
     * 这群数据里的一半的数据比它大,而另外一半数据比它小。
     *
     * 计算有限个数的数据的中位数的方法是:把所有的同类数据按照大小的顺序排列。
     * 如果数据的个数是奇数,则中间那个数据就是这群数据的中位数;
     * 如果数据的个数是偶数,则中间那2个数据的算术平均值就是这群数据的中位数。
     */
    
    #include <iostream>
    #include <cassert>
    #include <stack>
    #include <math.h>
    
    using namespace std;
    
    int QuickSortOnce(int a[], int low, int high) {
    
        // 将首元素作为枢轴。
        int pivot = a[low];
        int i = low, j = high;
    
        while (i < j) {
    
            // 从右到左,寻找首个小于pivot的元素。
            while (a[j] >= pivot && i < j) {
                j--;
            }
    
            // 执行到此,j已指向从右端起首个小于或等于pivot的元素。
            // 执行替换。
            a[i] = a[j];
    
            // 从左到右,寻找首个大于pivot的元素。
            while (a[i] <= pivot && i < j) {
                i++;
            }
    
            // 执行到此,i已指向从左端起首个大于或等于pivot的元素。
            // 执行替换。
            a[j] = a[i];
        }
    
        // 退出while循环,执行至此,必定是i=j的情况。
        // i(或j)指向的即是枢轴的位置,定位该趟排序的枢轴并将该位置返回。
        a[i] = pivot;
    
        return i;
    }
    
    void QuickSort(int a[], int low, int high) {
        if (low >= high) {
            return;
        }
    
        int pivot = QuickSortOnce(a, low, high);
    
        // 对枢轴的左端进行排序。
        QuickSort(a, low, pivot - 1);
    
        // 对枢轴的右端进行排序。
        QuickSort(a, pivot + 1, high);
    }
    
    int EvaluateMedian(int a[], int n) {
        QuickSort(a, 0, n - 1);
    
        if (n % 2 != 0) {
            return a[n / 2];
        } else {
            return (a[n / 2] + a[n / 2 - 1]) / 2;
        }
    }
    
    int main() {
        int a[9] = {-5, 345, 88, 203, 554, 1, 89, 909, 1001};
        cout << EvaluateMedian(a, 9) << endl;
        return 0;
    }
    
    // Output:
    /*
    203
    
    */
    展开全文
  • 如果数组有偶数个元素,中位数就是最中间的两个数值的平均数。 中位数对于了解“我的值是否位于中间?”非常有用。比如,我在学校的最后一次考试中得了 D (或 80),那么我的在全班同学中的排名是否在前 50%? ...
  • php计算中位数

    2020-04-02 12:02:29
    *计算中位数 中位数:是指一数据从小到大排列,位于中间的那个数。可以是一个(数据为奇数),也可以是2个的平均(数据为偶数) */ function median($numbers) { sort($numbers); $totalNumbers = count($...
  • Hive自定义聚合函数UDAF(计算中位数)

    千次阅读 2019-08-24 22:30:11
    中位数(Median)又称中值,统计学中的专有名词,是按顺序排列的一数据中居于中间位置的数,代表一个样本、种群或概率分布中的一个数值,其可将数值集合划分为相等的上下两部分。对于有限的数集,可以通过把所有...
  • 中位数定义为,将一个数列排序后位于中间的数值(数列长度为奇数时,取正中间的数,长度为偶数时,去中间的两个数的平均) 众数定义为,在一个数列中,出现次数最多的那个数值。 python代码实现:#计算平均数 def ...
  • 大数据求中位数(插值计算

    千次阅读 2020-06-15 11:48:24
    在学数学时我们学到过求中位数的方法,在数据个数为偶数时找最中间的两个数然后求平均数如果数据个数为奇数时则只需找数据个数一半的那位上的数字即可代表中位数(前提是数组是有序的) java代码如下: public ...
  • 计算两个有序数组的中位数

    千次阅读 2018-09-04 11:56:01
    题目: ...类比一个数组的中位数,求两个数组的中位数就相当于把两个数组合并后的一个数组的中位数,例 输入: num1=[1,3,5] num2=[2,4,6] 输出:(3+4)/2=3.5   方法:二分+递归 思路: --...
  • 如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 /* 思路: 构建一个最大堆和最小堆,分别...
  • 中位数

    千次阅读 2013-03-19 10:23:57
    中位数(Medians)统计学名词,是...当N为偶数时,中位数则为处于中间位置的2个变量值的平均数。 中位数的作用  中位数的作用与算术平均数相近,也是作为所研究数据的代表值。在一个等差数列或一个正态分布数列中,中
  • 中位数(C语言)

    万次阅读 2017-06-19 17:50:46
    计算有限个数的数据的中位数的方法是:把所有的同类数据按照大小的顺序排列。如果数据的个数是奇数,则中间那个数据就是这群数据的中位数;如果数据的个数是偶数,则中间那2个数据的算术平均值就是这群数据的中位数...
  • 有一天, KIKI 收到一张奇怪的信, 信上要KIKI 计算出给定数各个上数字为偶数的和. eg. 5548 结果为12 , 等于 4 + 8 KIKI 很苦恼. 想请你帮忙解决这个问题. Input 输入数据有多,每占一行,只有一个...
  • JAVA求数组的平均数,众数,中位数

    千次阅读 2021-07-03 13:55:48
    中位数中位数是指把一数据从小到大排列,如果这数据的个数是奇数,那最中间那个就是中位数,如果这数据的个数为偶数,那就把中间的两个数之和除以2,所得的结果就是中位数。 众数:众数是指一数据中出现...
  • MySQL查询一数据的众数和中位数

    千次阅读 2019-03-05 14:00:41
    1)首先对数据按照值的不同进行分组,并对每组中的数据进行计数,再根据计数的大小进行降序排序; 2)上述1)中结果集的第一行即要求取的众数所在的行。 方法2:适用于一组数据有一个或多个众数的情况 1)首先...
  •  从键盘上输入一个整数,分别计算数位偶数位之和。 1.首先需要明白,什么是奇数位?什么是偶数位? 一个整数,个为奇数,十偶数位,百位为奇数,...以此类推。 2.分别取出整数的奇数位偶数位的数字...
  • HDU5701 中位数计数【中位数+水题】

    千次阅读 2017-04-05 09:47:53
    中位数计数 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 2125 Accepted Submission(s): 735 Problem Description 中位数定义为所有值从小...
  • 一维数组实验题:计算平均数、中位数和众数 在调查数据分析(Survey data analysis)...提示:计算中位数时,首先要调用排序函数对数按升序进行排序,然后取出排序后数组中间位置的元素answer[n/2] ,就得到了中位数
  • LeetCode 1295. 统计位数为偶数的数字 (C++描述)

    千次阅读 多人点赞 2020-03-29 15:40:15
    给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。 示例 1: 输入:nums = [12,345,2,6,7896] 输出:2 解释: 12 是 2 数字(位数为偶数) 345 是 3 数字(位数为奇数) 2 是 1 数字(位数为...
  • 四分位数的数学计算以及使用pandas计算前言参考举例1(奇数个)第一四分位数(下四分位数)中位数第三四分位数(上四分位数)举例2(偶数个)第一四分位数(下四分位数)中位数第三四分位数(上四分位数) ...
  • python求解中位数、均值、众数

    万次阅读 2019-02-16 11:19:19
    首先定义一个数据,在这里我假定为: num=[2,3,2,5,1,0,1,2,9] 一、求中位数  中位数(又称中值,英语:Median),统计学中的专有名词...如果观察值有偶数个,则中位数不唯一,通常取最中间的两个数值的平均数...
  • 利用SQL求中位数(已修复BUG)

    万次阅读 热门讨论 2019-09-18 16:48:36
    引言 看《SQL进阶教程》,看到用 HAVING 子句进行自连接:求中位数...如果元素个数是偶数,则取中间两个元素的平均值作为中位数。 那么如何利用SQL求中位数呢? 将集合的元素按照大小分为上半部分和下半部分两个子集...
  • 如何找到两个数组的中位数

    千次阅读 2019-08-19 12:13:11
    大数的长度是奇数(11),中位数显然是位于正中的第6个元素,也就是元素5 上面的例子是奇数个元素的情况。那么偶数的元素是什么样呢?让我们来看另一个例子: 上图这两个给定数A和B,长度都是5,归并之后的大数...
  • 2.1 中位数、平均值、众数的总结

    千次阅读 2017-10-31 10:03:25
    中位数、平均值、众数的总结中位数 median 1.中位数,数据从小到大排序,中间位置的那个数字。奇数,+1除以2;偶数,则用除以2,除以2然后+1,这两项的和,再除以2求个平均 2.不容易受到数据两端的异常值影响,不...
  • 中位数(又称中值,英语:Median)

    千次阅读 2013-09-05 10:46:50
    如果观察值有偶数个,则中位数不唯一,通常取最中间的两个数值的平均数作为中位数。 一个数集中最多有一半的数值小于中位数,也最多有一半的数值大于中位数。如果大于和小于中位数的数值个数均

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,176
精华内容 14,870
关键字:

偶数组的中位数的计算