存在一个足够大的二维数组,每个数组中的值都是整数,使用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]


 

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

 
posted @ 2019-04-20 22:26  足迹#  阅读(328)  评论(0编辑  收藏  举报