javascript数组正态分布排序,有一篇比较好的文章,原文链接如下:https://www.cnblogs.com/webLaoHe/p/5721520.html
原博的思想是,对一个数组,先从小到大排序,然后将下标为偶数的放在左侧,为奇数的时候放在右侧,在左右两边的数组增长过程中,当数组长度相等时,对左右两侧数组之和进行比较,因为是按照从小到大排列的,所以正常情况下,右侧会大于左侧,然后将右侧第一个跟左侧最后一个互换一下即可达到平衡的目的。
参照原博的写法,我在自己的项目中写了一个正态分布排序。
首先是升序排序,
这种写法可以根据数组的某个属性进行排序,所以在以下代码中,我们根据income属性对incomeData数组进行升序排序。
排序成功后,我们定义左右数组,在这个过程中我们用到了几个JS数组操作函数。
push()在数组的尾部添加一个或多个元素,与之对应的是pop(),弹出并返回最后一个元素。
unshift()是向数组的开头添加一个或多个元素,并返回新的长度的数组,与之对应的是shift(),删除并返回数组的第一个元素。
contact()连接多个数组,返回新的数组,不改变原来的数组。
熟悉了操作函数之后我们就可以理解上面的代码了。其中的compare()、sum()和wrap()函数我们做了另外的封装,代码如下。
这样我们就实现了正态分布排序,我是用在图表分析里的,看看图表效果还是很不错的。