Javascript之计算众数和中位数

简介: Javascript之计算众数和中位数

先介绍一下众数和中位数:


众数:


一般来说,一组数据中,du出现次数最多的数就叫这组数据的众数。


例如:zhi2,3,3,3,4,5的众数是dao3。


中位数:


把一组数据按从小到大的数序排列,在中间的一个数字(或两个数字的平均值)叫做这组数据的中位数。


如果总数个数是奇数的话,按从小到大的顺序,取中间的那个数。


如果总数个数是偶数个的话,按从小到大的顺序,取中间那两个数的平均数。


扩展资料:


用众数代表一组数据,可靠性较差,不过,众数不受极端数据的影响,并且求法简便。在一组数据中,如果个别数据有很大的变动,选择中位数表示这组数据的“集中趋势”就比较适合。


当数值或被观察者没有明显次序(常发生于非数值性资料)时特别有用,由于可能无法良好定义算术平均数和中位数。


例子:{鸡、鸭、鱼、鱼、鸡、鱼}的众数是鱼。


众数算出来是销售最常用的,代表最多的。


平均数是通过计算得到的,因此它会因每一个数据的变化而变化。


中位数是通过排序得到的,它不受最大、最小两个极端数值的影响。部分数据的变动对中位数没有影响,当一组数据中的个别数据变动较大时,常用它来描述这组数据的集中趋势。


众数也是数据的一种代表数,反映了一组数据的集中程度.日常生活中诸如“最佳”、“最受欢迎”、“最满意”等,都与众数有关系,它反映了一种最普遍的倾向。


参考资料来源:百度百科——众数


参考资料来源:百度百科——中位数


好,下面贴代码:


//定义一个函数(冒泡排序)
function bubbleSort(arr) {
    var len = arr.length;
    for (var i = 0; i < len - 1; i++) {
        for (var j = 0; j < len - 1 - i; j++) {
            if (arr[j] > arr[j+1]) {        // 相邻元素两两对比
                var temp = arr[j+1];        // 元素交换
                arr[j+1] = arr[j];
                arr[j] = temp;
            }
        }
    }
    return arr;
}
//定义一个函数(计算众数和中位数)
function zzs(numbers){
var ns={};//
var max=0;
var zs=[];//众数
var zhs = null;//中数
//统计出现次数
for(var i in numbers){
  var j = numbers[i];
  if(!ns[j]) ns[j] = 0;
 ns[j]++;
}
//console.log(ns)
//找众数的值
for(var i in ns){
 var j = ns[i];
  if(j>max)max=j;
}
//console.log(max)
//找众数名称
for(var i in ns){
 var j = ns[i];
  if(j==max)zs[zs.length]=i;
}
//console.log(zs)
//调用函数(冒泡)
numbers = bubbleSort(numbers);
console.log('排序后:',numbers);
 var zz_wz =null;
if(numbers.length%2!=0){//奇数
    zz_wz =(numbers.length+1)/2;
    zhs = numbers[zz_wz]; 
}else{
   zz_wz = numbers.length / 2;
   zhs = (numbers[zz_wz] + numbers[zz_wz-1])/2; 
}
//直接打印,也可以改成返回结果。
console.log('中数是:'+zhs);
console.log('众数是:'+zs);
}
//调用函数
var numbers = [20,14,19,20,6,18,14,10,20,19];
zzs(numbers);
//调用函数
var numbers = [20,14,19,20,6,18,14,10,20,19,19];
zzs(numbers);


以下是运行结果:

排序后:

Array(10) [ 6, 10, 14, 14, 18, 19, 19, 20, 20, 20 ]

debugger eval code:44:9

中数是:18.5 debugger eval code:57:9

众数是:20 debugger eval code:58:9

排序后:

Array(11) [ 6, 10, 14, 14, 18, 19, 19, 19, 20, 20, 20 ]

debugger eval code:44:9

中数是:19 debugger eval code:57:9

众数是:19,20

相关文章
|
4月前
|
JavaScript 算法
原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,通过计算接触面积(重叠覆盖面积)大小来判断接触对象DOM
原生JS完成“一对一、一对多”矩形DIV碰撞检测、碰撞检查,通过计算接触面积(重叠覆盖面积)大小来判断接触对象DOM
|
4月前
|
JavaScript 前端开发 大数据
数字太大了,计算加法、减法会报错,结果不正确?怎么办?用JavaScript实现大数据(超过20位的数字)相加减运算。
数字太大了,计算加法、减法会报错,结果不正确?怎么办?用JavaScript实现大数据(超过20位的数字)相加减运算。
|
4月前
|
JavaScript
|
4月前
|
存储 移动开发 JavaScript
NUS CS1101S:SICP JavaScript 描述:五、使用寄存器机进行计算(1)
NUS CS1101S:SICP JavaScript 描述:五、使用寄存器机进行计算(1)
70 0
|
4月前
|
JavaScript
js计算时间为刚刚、几分钟前、几小时前、几天前··
js计算时间为刚刚、几分钟前、几小时前、几天前··
|
4月前
|
缓存 JavaScript 前端开发
Vue.js计算属性:实现数据驱动的利器
Vue.js计算属性:实现数据驱动的利器
|
2月前
|
JavaScript
js 精确计算(解决js四则运算精度缺失问题)
js 精确计算(解决js四则运算精度缺失问题)
62 0
|
2月前
|
前端开发
大屏自适应/适配方案【详解】(echarts自适配、rem、flexible.js、vscode中px2rem插件自动计算rem)
大屏自适应/适配方案【详解】(echarts自适配、rem、flexible.js、vscode中px2rem插件自动计算rem)
219 0
|
2月前
|
JavaScript 前端开发
js/javascript 操作时间日期【全】含时间日期的创建、获取、比较、计算、格式化、时间戳、昨天、今天、星期汉化、计时、相关插件等
js/javascript 操作时间日期【全】含时间日期的创建、获取、比较、计算、格式化、时间戳、昨天、今天、星期汉化、计时、相关插件等
74 0
|
3月前
|
JavaScript 前端开发 小程序
老程序员分享:js中自然日的计算
老程序员分享:js中自然日的计算
30 0