如何找到一组数据中心?

比如17,17,18,18,21,21,22,22,22,22,22,23,23,23,23,23,24,25,25,26,26,27,27,28,29,45

public static void main(String[] args) {
         int[] arr = {17,17,18,18,21,21,22,22,22,22,22,23,23,23,23,23,24,25,25,26,26,27,27,28,29,45};

        //求数组的平均值
        int sum = 0;
        for (int j : arr) {
            sum += j;
        }
        int average = sum / arr.length;
        //打印结果:23
        System.out.println(average);

        //求数组的中位数
        //将数组从小到大顺序排列
        Arrays.sort(arr);
        //判断数组元素个数是单数还是偶数;单数取中间值则是中位数,偶数取中间两个数的平均值即为中位数;
        double median = 0;
        //如果数组的长度除以2的余数为0,那么元素个数是偶数
        if (arr.length%2==0){
            int start = arr.length / 2 - 1;
            int end = arr.length / 2;
            median = (arr[start]+arr[end])/2.0;
        }else if(arr.length%2==1){
            double floor = Math.floor(arr.length / 2);
            median = arr[(int) floor];
        }
        //打印结果23
        System.out.println(median);
    }

我不知道你是想要平均值还是中位数,思路代码都展示出来

啥意思?是这样吗

array = [17,17,18,18,21,21,22,22,22,22,22,23,23,23,23,23,24,25,25,26,26,27,27,28,29,45]

array[len(array) // 2]

# 结果:23

 

求中间值吗?

有序的数组则直接判断长度,奇数就是中间那一个,注意索引值下标

 

Matlab的求解极简单。

A = [17,17,18,18,21,21,22,22,22,22,22,23,23,23,23,23,24,25,25,26,26,27,27,28,29,45];
a = mean(A)    % 平均值
b = median(A)  % 中位数

结果:

a =

   23.8077


b =

    23

 

C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html
C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html