存在一个足够大的二维数组,每个数组中的值都是整数,使用javascript如何实现按每个数组中的平均值,从大到小排序这个二维数组?

这是牛客网上的一道题~

题意:对数组排序,顺序是按照数组的平均值,即按照一个元素和平均值相减的绝对值的大小来排序。。。本例按这个绝对值递增排序

解题思想:先求出这个数组的平均值,如果 a<b,那么 a-avg<b-avg,这样,abs(a-avg) 小的就排到了前面,即离 avg 近的元素自然就排到了前面。

var arr = [-1,1,3,4,6,10]
function sortA(array){ var sum = 0; for(var i = 0;i < array.length;i++) sum += array[i]; var avg = sum / array.length; array.sort((a,b) => Math.abs(a-avg)-Math.abs(b-avg));
console.log(avg); console.log(array); }

//for test sortA(arr);
//3.8333333333333335
// Array [4, 3, 6, 1, -1, 10]

  

按照绝对值递增的顺序就排好了~

 

猜你喜欢

转载自www.cnblogs.com/baby-zuji/p/10743045.html