大神们! 请教个问题 如何取得一组数的中值

请问一个集合存放n个数 我怎么计算这n个数的中值 如果方便请贴代码,谢谢!!

您这里的取中间值是取排序的序号在中间还是数值的大小在中间?
如果是第一种去取排序序号在中间的比较简单

入托是第二种取数值在中间的也不难

public static void main(String[] args) {

    List<Integer> numList = new ArrayList<Integer>();

    numList.add(12);
    numList.add(19);
    numList.add(6);
    numList.add(2);
    numList.add(22);

    //取序号在中间的值
    int position = (numList.size()-1)/2;
    int num1 = numList.get(position);

    //取大小在中间,先排序后取值
    for(int i = 0;i<numList.size();i++){
        for(int j = i+1;j<numList.size();j++){
            if(numList.get(j)>numList.get(i)){
                int temp = numList.get(j);
                numList.set(j, numList.get(i));
                numList.set(i, temp);
            }
        }
    }
    int num2 = numList.get(position);

    System.out.println(num1);
    System.out.println(num2);
}

你说的是什么语言,这样好敲具体代码给你

暴力一点先排序再取中间的数如何?

1 先获取数组长度
2如果这个数能不被2整除,就是奇数,去除2的那个值+1作为key就是中间数。如果能被2整除.....我也不知道你的要求了

你说的中值是指中间的那个数的值,还是说这些数大小最居中的那个值啊。如果前者的话,楼上的就可以。
如果是后者的话,如下:

     #include<math.h>

    int a[5] = {3,6,7,10,5};

    int total = 0;

    //计算总和

    for(int i=0; i<5; ++i)
    {
                total += a[i];
    }
    //找到和总和除以2的值最接近的那个

    int DIF = 0;
    int idx = 0;

    for(int i=0; i<5; ++i)
    {
                //abs取绝对值
                int tmp = abs(a[i] - total/2);
                if(tmp < DIF)
                {
                        DIF = tmp;
                        idx = i;
                }       
    }

    cout << "中间值:" << a[idx] <<endl;

楼主给的是乱序,最后的c语言方法要先排序。

依据你的需求。偶数求中间数的平均数。奇数取中间值。代码如下
public static void main(String[] args) {

    List<Integer> numList = new ArrayList<Integer>();

    numList.add(12);
    numList.add(19);
    numList.add(6);
    numList.add(2);
    numList.add(22);

    //同样先排序
    for(int i = 0;i<numList.size();i++){
        for(int j = i+1;j<numList.size();j++){
            if(numList.get(j)>numList.get(i)){
                int temp = numList.get(j);
                numList.set(j, numList.get(i));
                numList.set(i, temp);
            }
        }
    }
    //奇数求平均数
    if(numList.size()%2 != 0){
        int position = (numList.size()-1)/2;
        int num1 = numList.get(position);   //奇数中间值
        //.....求平均数同之前的代码
    }
    //偶数求中间两个数的平均数
    else{
        int position1 = numList.size()/2;
        int position2 = numList.size()/2-1;

        int num2 = (numList.get(position1)+numList.get(position2))/2;

    }
}

}