关于js中的sort

arr=[1,2,3,4]

arr.sort(-1);//倒序
arr.sort(1);//正序
arr.sort(function(){
return 0.5-Math.random();//这里会返回7个随机数。
});
我原本以为。。arr.sort(1);这种写法的话。他是传一个1,然后函数按这个数对数组中所有数进行匹配、、、
我现在觉得大概是这样的。他其实是进行了多次循环,每次都给数组传一个1,所以数组中每一个数都会与上一个数进行匹配大的排前面。
所以
0.5-Math.random()是因为每次循环传给他的值都是不一样的,所以他有时候升序有时候降序。

假设随机数是一个数组
suiji=[0.07,0.2,-0.1,0.3,0.4,-0.02
]
arr=[1,2,3,4];使用了随机sort后输出的是[2,4,3,1]
1.将1,和2比较=0.07,换位arr=[2,1,3,4]
2.将1,3比较=0.2 换位 arr=[2,3,1,4];
3.将2,3比较=-0.1 不换位arr=[2,3,1,4];
4.将1,4比较=0.3 换位arr=[2,3,4,1];
5.将3,4比较=0.4 换位 arr=[2,4,3,1];
6.将2,4比较=-0.02 不换位arr=[2,4,3,1];
也就是说, 每次换位后他还会两两比较 ,将没比较过的相邻两位数进行比较。。。厉害了我的sort



posted @ 2017-01-11 10:23  chaimens  阅读(261)  评论(0编辑  收藏  举报